Hallo, endlich bin ich neu hier ;) Ich (Anfänger) wäre dankbar für jeden Tipp woran folgendes liegen kann: Meine Schaltung für ein RC-Auto (auf Lochrasterplatine) besteht aus 2 parallel geschalteten L293D-Motortreibern die 2 DC-Motoren steuern. Das tuen sie auch soweit zufriedenstellend, jede Menge Lötzinn an den GNDs und ein Wärmeableiter obendrauf lassen die beiden gerademal Handwarm werden, und alles dreht sich auch so wie es soll. Nachdem was ich so gemessen habe hätte auch ein L293D gerade so reichen müssen, aber dachte mir "Doppelt hält besser". Ein Arduino-Pro-Mini-Klon steuert das ganze, und macht soweit auch keine Probleme. Ein NRF24L01+ Modul mit integrierter Antenne hängt am SPI-Bus und wird über einen nur für ihn zuständigen AMS111 3.3V Spannungsregler versorgt, dieser hat "vorne" und "hinten" je einen 22uF-Elko (sonst nix) und hängt letztendlich an 4xAA 1.5V Batterien (wie auch der AVR und die H-Bridge). Direkt neben dem Sockel des NRF24 steckt nochmal ein 0,1uF Elko. Der "Pro-Mini" (ATmega328P-PU @ 8 MHz, 3.3V) nutzt seinen onBoard Spannungsregler, die Motortreiber werden direkt mit den ca. 6V der Batterien gespeist. Das ganze funktioniert soweit auch - Programm empfängt Funksignale, Programm steuert Motor, Auto bewegt sich... Ich habe eine Art Programmiermodus: vom PC schicke ich über ein Terminal Codes an einen Arduino, dieser schickt sie per NRF24 an das Auto, welches ihn an ein array anhängt. Damit schicke ich eine Art (Pseudo-)Maschinencode an das Auto, den es ausführen kann. z.B.: 004 (fahre vorwärts) , 255 (geschwindigkeit), 10 (*200ms Dauer) 001 (schlage links ein) 008 (fahre rückwärts), 255 (geschwindigkeit), 10 (*200ms Dauer) 003 (Lenkung loslassen = Nullstellung) 255 (Quit) Das Auto fährt also 2 Sekunden Vollgas vorraus, schlägt links ein und fährt 2 Sekunden mit eingeschlagener Lenkung vollgas zurück und lässt die Lenkung dann wieder zurückschnallen und bleibt stehen. Aber jetzt kommt der Punkt wo mir einfach Elektrotechnische Basics und Erfahrung fehlen: Meistens kann ich das einmal machen, manchmal klappt es auch, dass ich dann nochmal ein paar Bytes Befehle anhänge, und er sie sogar ausführt, aber spätestens dann bricht die Funkverbindung ab und er nimmt keine Befehle mehr an. Ich habe beim debugging an Serieller Schnittstelle festgestellt, dass der AVR nicht abgestürzt ist, sondern brav weiter den NRF24 abfragt, dieser aber entweder behauptet es wäre a) kein Paket empfangen wurden b) ein Paket voller Nullen empfangen wurde c) ein Paket voller Einsen empfangen wurde und manchmal auch d) ein Paket mit irgendwelchem Inhalt oder ganz gelegentlich auch e) abwechselnd ein Paket (z.B. voller 14en) und dann ein z.B. voller 63en angekommen. Meistens ist es allerdings b) ein Paket voller Nullen, allerdings stimmt nichts davon und tatsächlich gesendete Pakete werden nicht empfangen. Sorry für die lange Einleitung, aber was kann das sein? Ich habe verschiedene NRF-Module getestet, und generell funktionieren sie ja auch, an denen liegt es glaube ich nicht, eins habe ich auch mit integrierter PA und LNA, aber das Problem ist das gleiche, allerdings tendiert es mehr zu a) Nix empfangen. Es tritt meistens auf, nachdem ein Motor lief, aber nicht unbedingt, und scheinbar auch nicht unbedingt sofort danach, aber mit Sicherheit sehr bald... Manchmal nimmt er nach erfolgreichem Programmablauf noch 2,3 Bytes an, die ich schicke, und dann auf einmal nichts mehr - ohne dass erneut ein Motor lief. Ich vermute allerdings dennoch, dass es irgendwas mit den Motoren und Spannungsspitzen zu tuen haben muss, weiss aber nicht wie ich das Problem aufspüren und lösen kann. Also: Hinweise die zur Ergreifung des Übeltäters nützlich sein könnten bitte am örtlichen Terminal posten ;) 100nF-Keramik-Kondensatoren sind übrigens von jedem Motor-Pol zu GND, von den Logikspannungen der L293Ds zu GND und vor dem AVR-Modul zwischen der Eingangsspannung "RAW" und GND. Ausserdem am Motor selbst zwischen M+ und M-. Vor der Versorgungsspannung der Motortreiber geht nochmal ein 100uF-Elko auf GND. Nur so der Komplettheit halber...
Stefan Krause schrieb: > Also: Hinweise die zur Ergreifung des Übeltäters nützlich sein könnten > bitte am örtlichen Terminal posten ;) Alles 10 mal hintereinander ohne Motoren probieren. Wenns klappt, Motoren rausschmeissen, von Hand schieben. ;-) Im Ernst: wenns klappt, mit besserer Abschirmung versuchen, manchmal reicht schon ein Stück Alufolie.
Kennt ihr das Gefühl den Fehler gefunden zu haben, und man kann nur stöhnen wie dumm man war.... Fall ist gelöst, lag nicht am Motor, nicht an der Spannungsversorgung, nicht an Funkstörungen... Wenn's wen interessiert: dumm programmiert, Array übergelaufen, weil Zeiger nicht zurückgesetzt. Ich nehme an, hinter dem Array lag im RAM Programmcode oder irgendetwas relevantes für den NRF-Chip, und das wurde einfach von meinem Motor-Befehls-Code überschrieben, deshalb macht der dann nur noch Müll.... Und deshalb trat es auch immer dann auf, wenn man vorher RUN gesagt hat es hin und her gefahren ist und dabei seinen Programmcounter ganz hochgezählt hat. So kann ich dann ja beruhigt zu Bett gehen, und das morgen fixen...
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.