Ansys Assistant will be unavailable on the Learning Forum starting January 30. An upgraded version is coming soon. We apologize for any inconvenience and appreciate your patience. Stay tuned for updates.
General Mechanical

General Mechanical

Topics related to Mechanical Enterprise, Motion, Additive Print and more.

Energy harvesting ANSYS simulation using piezoelectric patches

    • Punnag Chatterjee
      Subscriber

      Hi,


      I am trying to perform a nonlinear(large deformations)-structural transient analysis of a clamped-clamped beam with piezoelectric bimorphs on each of the clamped ends, for my university research. I have recently downloaded the MEMS ACT module.


      I am exciting the entire system with an acceleration [A*sin(wt)similar to base excitation]. So, potentially this excitation should result in the mechanical vibration of the system and an open circuit voltage development across the piezoelectric patches which I wish to tabulate as a function of time (attached schematic). However, I am finding it difficult to set it up in ANSYS workbench. There seems to be dearth of examples in the internet. Any help or pointing me towards examples would be very helpful.


      I have attached my project here, where I am able to extract the deformation/deflection of the system due to the imposed acceleration. However, I am unable to figure out how to extract the time vs voltage information across the bimorphs at either clamped ends.



      P.S. Any ideas of how to incorporate a resistor across the bimorphs and measure voltage across it would be greatly appreciated.

    • jj77
      Subscriber

      Never done this but there was a similar post once:


      /forum/forums/topic/energy-harvesting-using-piezo-and-mems-extension/

    • Punnag Chatterjee
      Subscriber

      Hi,


      Thanks for your direction to the link. I have been able to make the workbech model with PZT patches. However, I have run into a problem where I am trying to write a command snippet to write the cumulative voltage data to a text file.


      I have already been able to write a table where the rows are the time steps (transient analysis) and the column 1  is the time stamp, column 2 is the Z displacement and column 3 is the sum of the nodal voltages. 


      I have a named selection of the mesh nodes whose voltage I want to be summed up at every time step. Snapshot below.



       




      Command Snippet:


       


      set,last


      *get, nsets,active,0,set,nset


      *dim, data_store,,nsets,3


       


      cmsel,s,LEFT_TOP_BTM_coupling


      *get,ncount,node,LEFT_TOP_BTM_coupling,count


      !*dim, volt_nodes,,1,ncount !used to save nodes No.


       


       


      *do,i,1,nsets


       vtot = 0


       set,nextnode


       


       *get,t,active,,set,time


       data_store(i,1) = t


       


       cmsel,s,Probe_pt


       *get,node_id,node,0,num,max


       *get,displ,node,node_id,UZ


        data_store(i,2) = displ


       


       *do,j,1,ncount   !trying to evaluate the voltage at every node then sum it at every time step


          set,nextnode


          cmsel,s,LEFT_TOP_BTM_coupling


         *get,volt_node,node,0,num,max


         *get,voltj,node,volt_node,volt


          vtot = vtot + voltj


       *enddo 


       data_store(i,3) = vtot


       


       


      *enddo


       


      *cfopen,try_testfile,txt


      *vwrite,data_store(1,1), data_store(1,2), data_store(1,3)


      %g %g %g


      *cfclos




      It does not seem to work. It just takes too long. Without the inner do loop it works fine. Any help would be appreciated.

    • Punnag Chatterjee
      Subscriber

      Hi,


       


      I have figured this out myself. Below is the complete/working command snippet.




      set,last


      *get, nsets,active,0,set,nset                                         !get the array/vector size from the 'last' time step index


      *dim, data_store,,nsets,3                                              !preallocate memory for creating a matrix/table of size (Row x column) = nsets x 3


      *get,ncount,node,LEFT_TOP_BTM_coupling,count    !get the array/vector size for the mesh node named selection 'LEFT_TOP_BTM_coupling'


      *dim, volt_nodes,,ncount,1                                           !used to save nodes No.


       


      *do,i,1,nsets


       set,nextnode


       


       *get,t,active,,set,time                    ! getting the current 'time' step and storing it in variable 't'


       data_store(i,1) = t                         ! storing this 'time' value in the 1st column of the matrix/table


       


       cmsel,s,Probe_pt                          ! selecting 'Probe_pt', which is a nodal point selected on the surface (after meshing) and is a named selection


       *get,node_id,node,0,num,max     ! getting the node id for the nodal point 'Probe_pt'


       *get,displ,node,node_id,UZ          ! Z displacement (UZ) at the nodal point 'Probe_pt'


       data_store(i,2) = displ                   ! storing this UZ value in the 2nd column of the matrix/table


       


       cmsel,s,LEFT_positive_coupling           ! selecting named selection 'LEFT_positive_coupling' which has mesh nodes


       *get,volt_node_id,node,0,num,max       ! selecting the mesh node id which has the highest value(could be any node within the selection)


       *get,nodal_volt,node,volt_node_id,volt  ! storing the voltage value from the selected node 'volt_node_id'


       data_store(i,3) = nodal_volt                   ! storing this voltage value in the 3rd column of the matrix/table


       


      *enddo


       


      *cfopen,Table_20_Hz,txt                                                      !name of output text file is 'Table_20_Hz.txt'


      *vwrite,data_store(1,1), data_store(1,2), data_store(1,3)


      %g,%g,%g


      *cfclos




      P.S. I have realized that in order to extract the open circuit (OC) voltage data from the Left piezo bimorph patch, I just need to track the nodal voltage of any one of the nodes within the named selection 'LEFT_TOP_BTM_coupling' and I DO NOT have to perform a summation of the voltages of all the nodes within this selection.

    • Punnag Chatterjee
      Subscriber

      Hi guys,


       


      I was trying to simulate the model in a different way. I was trying to simulate an OC condition by adding 2 CIRCU94 elements for each of the piezo bimorphs on the beam. The objective is to achieve something like this. I am facing problems where the solver is giving me errors and I have not been able to figure it out for the entire last week. Please help.


      I cannot figure out the error I am getting in the solution file.




      *** WARNING ***                         CP =       4.688   TIME= 22:406
       Specified constraints on slave degrees of freedom in a coupled set are 
       not allowed.  The constraint on this degree of freedom has been        
       removed: coupled set number 1, slave node 774, VOLT.                   

       *** ERROR ***                           CP =       4.688   TIME= 22:406
       Specified constraint not allowed on slave degree of freedom in coupled 
       set.                                                                   
        Coupled set number 1 First node= 67 Slave node = 774 Degree of        
       freedom = VOLT.                                                        
        Move Move constraint to first node or remove coupling and constrain   
       all.    




      I am attaching the workbench project here for convenience (Workbench 19.1).

    • HeMeng
      Subscriber

      Hi, Punnag Chatterjee,


           Could you please share your ANSYS Workbench model of  piezo bimorphs on the beam?


          I can not open the attached files. 


      Thanks


      Meng

    • Punnag Chatterjee
      Subscriber

      Hi Meng,


       


      Thanks for your interest. Please note that the attached file is meant for Workbench 19.1. Please let me know if that resolves it.

    • HeMeng
      Subscriber

      Hi Punnag Chatterjee,


          I used the Workbench 19.2, can you send me the  attached files again? 


          Thanks for your kind help!


       


       


       

    • Punnag Chatterjee
      Subscriber

      Hey, please find attached the 19.1 WB project file. Let me know if that resolves the issue.

    • HeMeng
      Subscriber

      Hi Punnag Chatterjee,


      I still can't solve the problem. The error result is as follows:


    • Punnag Chatterjee
      Subscriber

      Hey, I have attached another file to my previous post (Workbench 18.1) give that a try and let me know.

    • Guoyang
      Subscriber

      Hi, I have met this problem as well, have you solved it ?

    • HeMeng
      Subscriber

      Hey, please find attached the 19.1 WB project file. Let me know if that resolves the issue.


      I still have problem. Can you write a word or ppt  step by step?


    • yFan
      Subscriber

      Hi Punnag,


       


      Thank you for posting this. have you tried to validate the simulation results by experimental studies? I am wondering if the output voltage can match with the actual scenario.


      Thanks


       

    • alicepicci
      Subscriber
      nSimilar to you, I am trying to perform a transient structural analysis of a clamped plate with four piezoelectric sensors behind each edge. My plate is subjected to a central displacement ( which is a function of the time), and I would like to compute the resulting voltages of the piezoelectric. Could you share, how could you obtain it? nThank you,nAlicenn
    • Matthew Davenport
      Subscriber

      hello, 

      I am currently working on a piezoelectric bimorph cantileaver beam project in ADPL, and I am wondering if you would be willing to share your code for your setup?

Viewing 15 reply threads
  • The topic ‘Energy harvesting ANSYS simulation using piezoelectric patches’ is closed to new replies.
[bingo_chatbox]