This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

read values with ECAP hall sensors and turn them into a corner rotation shaft BLDC with drv8301-69m

Other Parts Discussed in Thread: DRV8301, CONTROLSUITE, DRV8312, MOTORWARE

hi,

I have the card drv8301 69m and I would be interested in understanding the operation of the modules ECAP, in particorare I would like to connect these inputs Sum of the three hall sensors with digital output 1-0 of my BLDC motor 6 magnetic poles. (attached data sheet).

looking at the datasheet with hall sensors mounted sa sb sc have a resolution of 12 degrees this is correct?

8473.5642 VVT3.pdf

what I would do, but that I have a real need help not code already done but an explanation of why you have to enter certain lines of your codes never otherwise would not understand how to program this complicated micro.

I would like to read the values from the three cap 1 2 3 have for example 011 and then convert this value into an angle increment or decrement if the direction of rotation is reversed.


Thanks for those who will help me in this path.

  • we actually don't use the eCAP module for Hall sensor feeback in the motor control library. We just use GPIO edge qualification. There is an example with the DRV8312 kit in controlSUITE
    C:\ti\controlSUITE\development_kits\DRV8312-C2-KIT_v128\BLDC_Sensored

    unfortunately there is not yet an example / driver in MotorWare for Hall sensors. To this point we have only been supporting sensorless or encoder feedback. We have plans to add a Hall example in the next release. We have customers (and I think some on e2e) who have added this code themselves to help with start-up (they then switch to FAST for sensorless operation).
  • cris hello, I have a 8301 I find him lying code where you suggested? the problem is that coupled with the 8301 + f28089 gpio pin I have no use for this purpose, or am I wrong? I tried in e2e but I have not found many explanations only the info summary, I would need a guide on how to use various forms, various IO with examples is explained step by step operation that makes an operation or function, because otherwise I am forced to let it go and move on to other micro other brands where there is a literature more appropriate for beginners to program the basics.
  • we did not release a sensored (HALL) BLDC project for the DRV8301 EVM. But I have posted an internal release on the forums before:
    e2e.ti.com/.../915458

    The "issue" is that this is controlSUITE style code, NOT MotorWare. Quite different if you are trying to integrate together and not for a "new to programming" user.
  • looking inside the post you suggested and its zip file I found the file header f2803xhall_gpio_BLDC.h believe that with oportune changes to this file I can get an angle using the inputs of ECAP?

    if I put in the function as
     
      #define HALL3_ECCTL2_INIT_STATE (CONTINUOUS_MODE + \
                                         TSCNTSTP_FREE + \
                                         SYNCI_DISABLE + \
                                         SYNCO_DISABLE + \
                                         CAPTURE_MODE)

    I say that practically use the pin labeled ECAP as normal gpio in which I read only the state of the value if high or low is correct?

    do you have to do only the changes on pins used and any function calls or do I have to add the pieces of code in order to have a value of angle of the shaft of the electric motor?
  • this doesn't give you an angle. this only tells you when a hall sensor edge occurs.
  • it is clear, for example, I read the three gpio 40 41 42 I put in succession the bits and get for example (101), then the last change lobby was read 100 for me the tree in fact 12 ° of rotation and so on is correct as reasoned.
    (10 magnets and 3 hall give me a minimum resolution of 12 °).


    another question to read the time the position and then call the function call to the function I have to put inside the main ISR ()?


    thank you