Hey guys, Im attempted to use the odrive with the UART communication (ardunio softserial). For some reason i get no response out of my odrive 3.6. The stock Arduino library returns a 0v signal and a 0 position. Yes the halls, gnd, power, resistor ect are hooked up as odrive recommends.
Ive attempted to reflash the stock firmware on the odrive with python, but i run into a strange NoBackendError.
Any idea on how to solve this issue?
Well first off make sure that you can control the odrive by configuring it over USB. Then debug the other issues.
Alright! Sadly i have yet to get the python library working, any suggestions on how to fix the backend error? I was able to fix the UART communication issues, it now reads bus voltage and completes calibration steps. However motor position will not change at all
Hi @pistonsoup I have been working with Odrive for quite some time now and I have tried position and velocity control. Now I want to establish UART communication between Odrive controller board v3.6 and Arduino UNO board. I have found the OdriveArduino library from the github page. But just like you, I am unable to read the vbus voltage. It just says 0V. But when I try via terminal I can read the voltage properly. Could you explain how you were able to fix the UART Communication issues in your case ? And suggest solutions ??
Hi,
Could you please share a bit more info about your setup?
- Which ODrive device and which firmware are you running
- How do you have the ODrive UART input configured
- How do you have the Arduino and ODrive wired together
1 Like
Hi, @Nicholas_Schneider thanks for your reply.
- The Odrive I am using is 56V Odrive V3.6 and the firmware is Odrive control utility v0.4.12.
- For UART I have enabled uart_a using odrivetool via terminal. And set uart0_protocol to ASCII protocol (I would want to use this rather than the Native protocol for now). And I have configured gpio1 and gpio2 to be used as UART pins.
- As for the connections between Arduino UNO and Odrive I have used pins 8 (RX) and 9 (TX) on Arduino UNO as per the code I have shared in the screenshots above.
- In Odrive as mentioned in the pinout of v.3.6, I have used gpio1 as TX and gpio2 as RX.I have connected GND on both the boards.
- I have connected power supply to Odrive (24 V) and I am powering Arduino via USB which is connected to my PC.
- I have used Arduino IDE to program the Arduino UNO board, I have used the library and test code made available by @madcowswe for UART communication.
I hope this answered your queries.
Kindly suggest me what changes would be required to solve the issues I am facing. Any corrections are welcome.
Thanks!
@KAVYA_DRAVID apologies, I only used the odrive for one project. I don’t think I would be able to remember exactly how I solved this issue (especially because I no longer have access to the code base haha)
I had to do 2 things to get this working for my application (I needed position control, to a teensy 4.1)
-
Update firmware (my local firmware was very old)
-
I ended up referencing the code base from a youtuber bellow:
Youtube
He has a variety of projects that have the code for teensy, I think you could modify for you application.
1 Like
@pistonsoup thanks for your reply. Do you mind sharing your reference from YouTube? I am unable to access the link that you have shared here.
(1) ODrive control utility v0.4.12
is actually the odrivetool
version (which is pretty old, I would suggest updating, but this is unrelated), you can check the firmware version in odrivetool
with
odrv0.fw_version_major
and odrv0.fw_version_major
.
I would strongly suggest updating the firmware if it’s not v0.5.6
, you can do this by running odrivetool dfu
.
(2) Okay cool, this all looks good, assuming uart_a_baudrate
is still the default 115200?
(3) You have TX->RX and RX->TX right?
(6) I’m assuming these are identical, but just in case, can you confirm this is the same code?