Hallo alle zusammen, ich bin gerade dabei einen Brushless Motor Regler mit Rotations-Feedback zu entwickeln. Die Idee ist, eine Platine an der Rückseite eines Außenläufers zu befestigen und dann mittels eines am Schaft montierten Magnet und einem auf Halleffekt basierenden Rotationssensor die exakte Rotorposition zu bestimmen. Als Rotationssensor habe ich einen MLX90316KDC-BDG-SPI vorgesehen. Dieser antwortet aber nicht auf das SPI Signal. Es scheint, als ob die Datenleitung auf Low gehalten wird. Ich weiß aber nicht wieso. TLDR; MLX90316KDC-BDG-SPI hält Datenleitung konstant auf Low, ich weiß aber nicht warum. Ich habe die Spannungslevel in Bezug auf GND an allen Pins des MLX90316 gemessen: 1. 5V 2. 0V 3. 5V bzw. 0V während der Übertragung 4. siehe Oszi 5. siehe Oszi 6. 0V 7. 3.3V 8. 0V Die Platine wurde auf Kurzschlüsse getestet. Außerdem habe ich alle relevanten Bauteile ausgetauscht. Anbei sind zwei Oszilloskop-Messungen. Einmal mit dem Sensor aufgelötet und einmal ohne Sensor. CH1 ist SCLK (Pin 4), CH2 ist MOSI/MISO (Pin 5). Zusätzlich habe ich das Signal noch mit einem Logikanalyser überprüft, um das Timing zu checken (signal1-3.png). Außerdem habe ich noch einige Bilder des Layouts und eins des gesamten Schaltplans beigefügt sowie das Datenblatt des Sensors und den Code, mit dem ich getestet habe. Ich bin gerade echt am Verzweifeln, da ich nicht mehr weiß was ich sonst noch Testen kann. Falls jemand eine Idee oder sonst noch konstruktive Kritik an meinem Vorhaben hat, würde ich mich sehr freuen. Man lernt schließlich nie aus. Grüße, Alex
Wie sehen die Signale aus, wenn Du während der Kommunikation SSMLX auf HIGH lässt?
Hallo, 100 Ohm am MISO kann der das? Wir haben da 1kOhm. Sonst schaut die Schaltung mal okay aus. sg
clonephone82 schrieb: > 100 Ohm am MISO kann der das? Wir haben da 1kOhm. Sonst schaut die > Schaltung mal okay aus. Ich würde auch mal R6 auf 1kOhm erhöhen.
Hallo, vielen Danke für die Antworten. Ich habe beide Punkte nochmal überprüft und nachgemessen. John P. schrieb: > clonephone82 schrieb: >> 100 Ohm am MISO kann der das? Wir haben da 1kOhm. Sonst schaut die >> Schaltung mal okay aus. > > Ich würde auch mal R6 auf 1kOhm erhöhen. R16 habe ich mit 1kOhm ausgetauscht. Das Signal bleibt exakt gleich. Ist es möglich, dass der Sensor durch den niedrigen Widerstand zerstört wurde? Mir ist aber auch nicht genau ersichtlich wie ein höherer Widerstand an dieser Stelle das Signal verbessern sollte, da der MISO Pin am AVR als Hochohmiger Eingang geschaltet ist. Joerg W. schrieb: > Wie sehen die Signale aus, wenn Du während der Kommunikation SSMLX > auf > HIGH lässt? SSMLX auf High erzeugt bei MOSI und SCK am MLX90316 das gleiche Signal. Nur SS ist eben HIGH. Sollte aber meines Erachtens Active Low sein. So steht es zumindest im Datenblatt. Grüße Alex
Beo Bachta schrieb: Hallo Bei Bachta, Vielen Dank für deine Antwort. > Was soll die Schaltung mit Q7 tun? Die Schaltung habe ich aus dem Datenblatt übernommen. Meine Intension war, den Hardware SPI des AVRs zu verwenden um Rechenzeit zu sparen. Da dieser MISO und MOSI getrennt hat und am MLX beide Signale über einen Pin laufen benötigt man den Mosfet. Der sorgt dafür, dass die Datenleitungen frei bleibt, wenn MOSI vom AVR auf LOW (inaktiv) ist. Und ja ich weiß, dass das Signal Invertiert wird. Deine Befürchtung, dass die Schaltung Unsinn ist hatte ich aber auch schon und habe sie deswegen zeitweise überbrückt. Leider ohne Erfolg. Grüße, Alex
Alex schrieb: > Der sorgt dafür, dass die > Datenleitungen frei bleibt, wenn MOSI vom AVR auf LOW (inaktiv) ist. Du bekommst diesen Zustand nicht garantiert da bei entsprechender Polarität der SPI-Maschine der statische (inaktive Zustand) auch High sein kann. Die Schaltung ist Mist und erzeugt Mist!
Alex schrieb: > habe sie deswegen zeitweise überbrückt. Wie soll das aussehen? Da gibt es nichts zu überbrücken. Der Transistor muss weg damit die SPI Kommunikation funktioniert. Controller MOSI muss an MLX90316 MOSI und Controller MISO muss an MLX90316 MISO!
Ja ich weiss dass es MLX90316 MISO nicht gibt. Beo Bachta schrieb: > Controller MISO muss an MLX90316 MISO!
Ich habe mich gefragt, ob Du die "TStartUp - < 10 ms / 16 ms " einhältst? (Wenns der erste Frame gewesen wäre, den Du gemessen hast.)
Beo Bachta schrieb: > Du bekommst diesen Zustand nicht garantiert da bei entsprechender > Polarität der SPI-Maschine der statische (inaktive Zustand) auch > High sein kann. Da hast du Recht. Das müsste aber durch gleichzeitiges schreiben einer 0 lösbar sein. Aktuell werden die Pins des AVRs aber durch eine Bitbang SPI Programm angesteuert. Dabei wird dann auch der statische Zustand richtig gesetzt. Beo Bachta schrieb: > Wie soll das aussehen? Da gibt es nichts zu überbrücken. > Der Transistor muss weg damit die SPI Kommunikation > funktioniert Genau. Ich habe den Transistor ausgelötet und R16 überbrückt. Zusätzlich habe ich auch das Programm angepasst. Wenn du meinst, dass das funktionieren sollte, probier ich es nochmal aus. Vielleicht hatte ich noch ein Fehler drin. Heinz R. schrieb: > Ich habe mich gefragt, ob Du die "TStartUp - < 10 ms / 16 ms " > einhältst? > (Wenns der erste Frame gewesen wäre, den Du gemessen hast.) Die Fuses des AVR sind auf 64ms Startup-Time gesetzt. Das sollte das Problem eigentlich lösen. Zusätzlich sind die Messungen auch nicht die des ersten Frames.
Alex schrieb: > Genau. Ich habe den Transistor ausgelötet und R16 überbrückt. Wenn du R16 überbrückst dann verbindest du Controller MISO mit MLX90316 MOSI - und das ist falsch. Kannst du lesen, nicht nur drüberfliegen? Beo Bachta schrieb: > Controller MOSI muss an MLX90316 MOSI
Beo Bachta schrieb: > Wenn du R16 überbrückst dann verbindest du Controller MISO > mit MLX90316 MOSI - und das ist falsch. Aktuell verwenden ich nicht den Hardware SPI sondern eine Bitbang Implementierung (siehe main.c). Dabei kann man die Pins beliebig umdefinieren, was ich dann auch gemacht hatte. In diesem Fall war es leichter die Pin Definition zu ändern als die Leiterplatte. Tut mir leid, wenn ich manche Dinge nicht so exakt formuliere. Bin gerade unterwegs. Ich werde das ganze mit dem Überbrücken nachher noch genauer erklären damit wir nicht mehr aneinander vorbei reden. Grüße, Alex
Alex schrieb: > was ich dann auch gemacht hatte. Bei solcher Beliebigkeit / Ungenauigkeit bei der Berichterstattung und dieser Salamitaktik bin ich dann mal weg.
Hallo, ich bin es wieder. Leider habe ich immer noch keine Lösung zu meinem Problem gefunden. Um die Unklarheiten der vorherigen Posts zu beseitigen und um den Troll endgültig zu überfüttern, hier noch die zwei alternativen Schaltungen die ich getestet hatte und jetzt noch einmal neu getestet habe. Bei beiden Versuchen habe ich ein modifiziertes Programm (Anhang: main.c) verwendet, um den Pin MISO/MOSI hochohmig zu schalten, wenn Daten empfangen werden. Beim ersten Versuch (Anhang: mit_R16.png) habe ich Q7 Ausgelötet und SCLK (Gelb) und MISO/MOSI (Blau) am MLX gemessen (Anhang: ohne_Q7_und_mit_R16_am_MLX.png). Beim zweiten Versuch (Anhang: ohne_R16.png) habe ich R16 überbrückt und die selbe Messung durchgeführt (Anhang: ohne_Q7_und_ohne_R16_am_MLX.png). Ich habe auch nach Kurzschlüssen oder Widerständen zu GND gesucht aber keine gefunden. Die Stromaufnahme der gesamten Schaltung beträgt ca 24 mA. Meines Erachtens liegt der Fehler beim MLX90316. Es gibt also drei Möglichkeiten warum der Sensor nicht funktioniert: 1. er ist falsch beschaltet (was ich dank euch zu 100% ausschließen kann) 2. er befindet sich in irgend einem Fehlermodus (siehe Datenblatt Kapitel 14. Self Diagnostic) 3. der Sensor ist gar kein MLX90316 mit SPI (siehe Anhnang: IC.jpg) (Quelle: https://de.aliexpress.com/item/MLX90316-MLX90316KDC-BDG-SPI-316BDG-SOP8-MELEXIS-10pcs-lot/32829915280.html) Leider Fehlen mir die Möglichkeiten und Informationen um die letzten beiden Punkte zu überprüfen. Falls jemand schon einmal ähnlich Probleme hatte oder eine Idee hat, wie ich den IC identifizieren kann, wäre ich sehr dankbar. Ansonsten habe ich mir den Sensor jetzt noch von einer anderen Quelle bestellt. Sobald der da ist werde ich mich nochmal hier melden. Grüße Alex
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.