Welcher Controller/ Modul(e) für Motorsteuerung und Kamera, Akku?

  • Guten Abend alle zusammen.


    Eine Informatikerin in meinem Bekanntenkreis möchte gerne mit mir zusammen ein Gefährt bauen, was folgende Aufgaben erbringen soll:


    • 4x DC Motoren, angesteuert mittels H-Brücke und PWM
    • 1x Kamera I2C
    • XBEE WIFI SPI/UART
    • Tiefentladeschutz mit eventuellen ADC Ausgang für AVR
    • Diverse I/O Ausgänge

    Hier mal ein Logikdiagramm:




    Sind dann:


    • 8x PWM
    • mind. 1x ADC
    • 1x SPI oder und UART
    • 1x I2C
    • mind. 10x I/O PINs


    Unsere Frage;


    Welches Modul oder welcher Atmega ist für diese Aufgabe bestens geeignet?!


    Der Code wird in C geschrieben und wird mittels WLAN von einem Tablet gesteuert oder einer Eigenkonstruktion mit Touchpad Display und 2 zwei Achsen Joistick.



    Da das ganze im Anfangsstadium hängt, und erst nur die Motoren da sind, sind wir für alles offen.
    Nur vorweg gesagt, die 2 Motoren für den Antrieb werden schon an die 3A das Stück brauchen.


    Die Motoren im Diagramm neben der Kamera sind für die X/Y Ausrichtung dieser und werden nicht so stark sein.


    Mit Grüßen


    Denis

  • Wenns ne alternative zum AVR sein darf müsste der dsPIC glaub ich was für dich sein. Ich zitiere mal das Datenblatt...


    Ergo hast du insgesamt 4 Halbbrücken.
    SPI/UART/I2C und recht flotte ADCs (500ksps/s)....

  • Danke für die fixe Antwort :)


    Da ich mich noch nie mit PICs beschäftigt habe muss ich jetzt mal ganz blöd fragen.


    Kann man die mit einem "mySmartUSB light" Stick beschreiben, oder werden die ganz anders geflasht?
    http://shop.myavr.de/Programme…ticle.sp.php&artID=200006


    Zudem muss ich meine Frage etwas erweitern:


    Nicht nur den Controller, sondern was für Module kann man für die H-Brücken nehmen, Modul für den Entladeschutz und Laderegler / Akku und eine Kamera?
    Sofern man jetzt nicht einen Abgestimmten AVR nimmt und es sich so zurecht "basteln" muss


    Ich habe in diesem Zusammenhang viel beim Suchen über die Arduinos gelesen.


    EDIT:


    @ PESI, dgoersch und Co:


    Wie sieht es mit dem geplanten neuem SEDU aus?
    Wäre das eine Komplettlösung für die Ansteuerung?

  • Guten Abend,


    könnte mir auch gut vorstellen, dass sich das Projekt mit einem XMEGA erledigen lässt.
    Hier hast du von den Schnittstellen halt noch Möglichkeiten das Gefährt später weiter auszubauen.


    Als Einstieg könntest du dir ja mal mein Tutorialanschauen.


    Es gibt auch Typen, die sich direkt über USB programmieren lassen. Leider werden die Controller nicht gleich mit dem Bootloader geliefert. Man muss somit zumindest einmalig mit einem ISP bzw. JTAG Programmer zumindest den Bootloader aufspielen.


    Gruß Flo

  • Ne da brauchst du z.b. sowas oder die Chinaversion davon.


    Was meinst du denn mit Module? So Fertigsachen wie z.B. das hier ?


    Je nach dem wie viel Power deine Motoren haben kommst du da mit Modulen nichmehr weit (Strombelastbarkeit). Wenns starke Motoren sind muss vllt selbst eine Platine entwerfen.
    Batteriemanagment sollte doch ganz gut mit dem ADC und nem passenden Spannungsteiler gehen oder? Ist die Akkuspannung zu Tief wird die PWM abgestellt oder gedrosselt oder was weiß ich was^^

  • Danke Stromflo und bower.


    Einen XMega hatte ich bislang nicht auf dem Schirm und späteres flashen mittels Bootloader ist eine äußerst praktische Lösung.
    Vor allem wenn ich mal so sehe was der "32"er alles kann!
    Zudem noch Bascom "kompatibel für den Notfall.


    Wir werden uns dein Tut, was äußert ausführlich geworden ist, mal genauer durchlesen.
    Gute Arbeit wenn ich das sagen darf!



    Den Tiefentladeschutz mittels ADC zu überwachen ist auch eine super Lösung.
    So einfach hatte ich bislang nicht gedacht!


    Leider glaube ich auch, das ich die Motorsteuerung selbst entwerfen muss.
    Welche ICs für PWM gesteuerte H-Brücken für MOSFET Ansteuerung sind da günstig und gut geeignet?
    Danke für den Wink!


    Grüße Denis

  • Die Frage is ob Selbstbau bei der H-Brücke nicht billiger wird. Ich muss zugeben ich hab noch nie größere Ströme (>10A) mit MOSFETs geschalten aber braucht man da viel mehr als 2 Vollbrückentreiber und 8 FETs? Wenn nein denke ich, dass man da für <100€ was brauchbares designen kann...kann mich aber auch irren.


    Potente FETs gibts ja schon für paar Euro.

  • Guten morgen


    Nochmals vielen Dank für eure weitere Hilfe.



    Die 2 Antriebsmotoren haben ja bei Volllast 2,6A, wohingegen die 2 kleinen Motoren unter der 1A Grenze sind.
    Da dürfte es dann etwas günstiger werden, wenn man nicht 2 "Monsterbrücken" bauen muss, sondern nur eine Starke für den Antrieb.


    Dazu eine Frage:


    Ich wollte mit dem PWM Signal direkt ansteuern, wenn man jetzt von einer einfachen H-Brücke ausgeht mit vier FETs.
    Sprich PWM auf Gate legen je Richtung und gut.


    Dabei habe ich jetzt aber auch ICs gesehen, welche das PWM Signal brauchen, zusätzlich aber noch eine "Steuerleitung" welche den Befehl zum aktivieren der Stufe gibt.


    Sollte ich dann etwas ähnliches mit einem UND Gatter vor die FETs bauen oder einen modifizierten Komparator?



    Ich danke nochmals.


    Mit Grüßen


    Denis

  • Sollte ich dann etwas ähnliches mit einem UND Gatter vor die FETs bauen oder einen modifizierten Komparator?


    Wäre besser, sonst geht bei ner Fehlprogrammierung deine H Brücke in den Kurzschluss... da man aber noch ein Delay einbauen muss, zwischen schließen und öffnen, gibts schon recht ausführliche H Brückentreiber. Da gibts IMO auch welche die 2,4 A direkt fahren können, ohne externe MOSFETs... das könnte aber schon, sehr eng werden...


    Ansonsten halte ich deine Controllerauswahl für mäßig, da es es ja meist so is, dass immer mehr Spielzeug dran soll ;)... so was macht man am schnellsten mit einem raspberry pi oder ähnlichen Systemen... Da brauch man kein AVR, oder PIC mit quälen...

  • Hallo nochmal


    Einen Raspberry PI... hm


    Ja, das ist bei uns auch schon gefallen, nur leider ist das Programmieren auf Linux Basis nicht so unser Wissenstand, den wir besitzen.
    Ich weiß jetzt nicht inwieweit man da mit Java oder C arbeiten kann.

    Mitbringen tut das PI ja alles was gewünscht wird, vor allem die Kamera.


    Alternativ zu der Kamera war die Idee, da ein simples Funkmodul zu nehmen, was man fertig bei R oder C oder in der Bucht kaufen kann.
    Receiver und Decoder für wenig Geld.


    Das würde die gesamte Ansteuerung dieser komplett entfallen lassen.


    Welche ICs für Motoren sind denn wie gesagt zu empfehlen, die mittels eines PWM Signals und einer, bzw zwei Steuerleitungen einen knappen 3A Motor antreiben können, bzw als FET Treiber fungieren können?


    Wahrscheinlich werden wir dann auch einen XMEGA nehmen, alleine deswegen, weil ich den unter anderem noch nicht in den Fingern hatte und ein Projekt damit reizbar ist.
    Zudem ist es noch in unseren Möglichkeiten der Programmierung.


    Denn machbar ist das schon mit einem Atmega/Xmega.


    Das ist eigentlich auch kein Problem, ein komplettes Board selbst zu erstellen und zu löten, geschweige denn die Motortreiber zusammen zu Bauen.



    Das Projekt ist jetzt auch nichts, was wir mal "schnell, schnell" raus hauen wollen, sondern der Lerneffekt und die ordentliche Umsetzung ist das Ziel.


    Danke dir Flo und Basti



    Grüße
    Denis

  • Nein noch nicht.
    Aber danke für den Link.


    Nur eins muss ich noch wissen:


    Ich brauche einen H-Brücken- PWM Mosfet Treiber so wie in diesem Schaltplan, nur als IC und am Besten direkt für zwei Motoren.



    Also sollte der IC einmal einen PWM IN haben plus zwei Richtungs Eingänge


    Wenn es den IC nicht gibt, der gleich zwei Motoren mit 2 PWM und 4 Richtungspins hat, dann reicht auch eine "Single" Version davon, nur leider weiss ich nicht wie die heißen, vor allem nach meinen Anforderungen wie im Schaltplan.


    Ein reichelt Link währe super toll!


    Danke nochmals und Beste Grüße


    Denis

  • Ja, die habe ich gesehen, nur nicht GENUG Strom.


    Ich habe Peaks bis zu 10A, wenn man mal 2,6A aufgerundet 3A Betriebs Strom pro Motor weg denkt.


    Zitat

    Output current 1A per Channel
    Peak Output Current 2A per Channel


    Da reichen die nicht wirklich, deswegen will ich da ne Mosfet Stufe dran setzen nach dem IC.


    Also der IC soll dann nicht 2 Ein und Ausgänge haben für die Motorwicklung, sondern einfach einen PIN, welcher 5V out liefert oder nicht pro Richtung.


    So wie die drei Transen auf dem obigem Schaltplan.


    Ich werde mir nähmlich dann die vier FETs pro motor selbst zusammen löten wollen, nur halt den treiber samt PWM IC davor schalten, statt poplige TO-92er Tranistoren.


    Es sei denn der genannte IC, verkraftet das auf Dauer, weil überwiegend fahre ich auf Vollast die Motoren.


    Gruß


    Denis


    EDIT:


    Ach warte mal, ich kann ja an den 2 Ein und Ausgängen die FETs dran werfen!
    Ich hatte gerade noch Wechselspannung im Kopf statt Gleichspannung.


    Statt die Motorwicklung verbinde ich die an FETs pro Seite.


    Sollte gehen oder?


    Sorry Steve

  • Hallo nochmal alle zusammen.



    Ich habe eine kleine Gedanken Hürde...


    Ich werde die Motoren mittels 3D Sticks ansteuern, also sowas wie PlayStation Joysticks.


    Diese sind ja eigentlich 2 Potentiometer mit Mittelrückstellung und einem Taster, welcher aber unwichtig ist derzeit für mich.


    Sowas wie das hier z.B.:
    http://www.reichelt.de/6mm-Pot…ID=3136&artnr=RKJXP122002


    Soweit alles OK.


    Der Grund-Plan ist wie folgt:


    ADC Auswertung der Positionen vom Jyostick.
    Dazu wird der Schleifkontakt des Potentiometers an den ADC Eingang des AVR geschaltet.
    Über die Kohlenstoffbahn von kontakt 1 zu 3, wird Plus und Masse angeschlossen, eben alles als typischer Spannungsteiler aufbauen.


    _____
    [ * ]
    _____
    I I I
    1 2 3
    + A -


    Jetzt werde ich wie folgt vorgehen:


    Ich werde den ADC auswerten, aber statt 10Bit, in 8Bit umwandeln.
    So werde ich direkt zu Anfang den 1024 Wert durch 4 Teilen.
    Das mache ich unter anderem, weil ich mit 8bit PWM arbeiten werde und die derzeitige Funkstrecke nur 8Bit Nutzdaten zu lässt.


    Soweit ja OK


    Gehen wir jetzt mal von Vor- und Rücklauf des Motors aus, also Stick nach vorne schieben bis 255 Bit oder zurück ziehen zu 0 Bit der ADC Spanne.
    So, eine Besonderheit:


    Der Stick hat eine Mittelstellung, also irgendwo in der Nähe von der Mitte von den jetzigen 255 Bit, sprich 128 Bit
    Das 128te Bit, wird nicht benutzt, sondern nur die Spanne von;
    0 zu 127 Bit und 128 zu 255 Bit, so das man pro Bereich je 127 Bit hat.


    Das 128ten Bit soll deswegen nichts machen, weil ich den zur Richtungserkennung benötigen werde, sozusagen als Schwellwert von 127 zu 128 oder von 129 zu 128.
    Damit werde ich einen Motorstop erreichen, damit dieser Bremsen kann bevor er die Richtung ändern wird.


    Jetzt habe ich aber folgendes "Problem":


    Der Jyostick wird im gedachten Idealfall in der Mitte stehen, also bei "128".
    Möchte ich den Motor nach "Vorne" bewegen, schiebe ich den Stick von mir weg, in Richtung den maximalen "255"
    Jetzt habe ich von 128, bis Maximum die besagten 127 Schritte gemacht.


    Werde ich nen Motor nach "Hinten" fahren wollen, ziehe ich den Stick zu mich ran, also von "128" nach "0".
    Das sind wieder 127 Schritte.


    Jetzt werde ich bei 128 immer 10ms Warten im Programm, bis dieser den ADC weiter an das PWM übergeben wird.



    Jetzt habe ich aber das Problem, das ich nur den Teilbereich der jeweiligen Hälfte des Potentiometers haben will, also von 128 zu 255 (127) und von 128 zu 0 (127)


    Jetzt möchte ich aber beide Bereiche als 127 da "stehen" haben, also von 0 zu 127, damit ich diese später mit 2,00787 Multiplizieren kann um 255 zu erreichen.


    Wie mache ich das jetzt in BASCOM, das von 128 zu 0 = 127 sind und von 128 zu 255= 127 sind?!



    Das ich nur diesen Teilbereich auswerte für meinen Code und den dann sogar noch als Positive Zahl im besagten ADC Raum habe??



    Muss ja nicht Bascom sein, eine schrittweise Mathematische Funktion würde mir auch das Prinzip verdeutlichen.



    Ich danke euch schonmal


    Grüße


    Denis
    Nachtrag.
    natürlich soll 255 in umgerechneten pwm Bereich 255 Bit sein und 0 ebenfalls 255 Bit pwm haben.

  • Überlege bei deiner Schaltung, wie du eine Totzeit einbaust zwischen Ausschalten der einen und Einschalten der anderen Stromrichtung. Machst du die Ansteuerung so ähnlich wie im Schaltplan weiter oben, sind im Umschaltmoment high side und low side Transistor gleichzeitig leitend. Das mögen die dann überhaupt nicht.


    Alternativ könntest du dir für jeden Motor einen L6202 Treiber nehmen (gibts glaubich auch noch beim Reichelt) und mit Chopper arbeiten. Damit wird nix überlastet. Ich wollte mir vor einer Weile was ähnliches bauen, hier ein Schaltplanausschnitt als Ideengeber...

    R6 auf ca. 3A anpassen für deinen Fall -> ca. 0.15 Ohm.

  • Hallo Besupreme.


    Danke dir für den Schaltungsauschnitt und deinen Ideen dazu.


    Die Totzeit werde/wollte ich mittels Code austricksen.


    Wie eben beschrieben, werde ich immer beim 128 Bit eigentlich 10ms warten wollen, bevor der wieder das PWM in die jeweilige Richtung ausgibt.


    Stattdessen habe ich mir gerade noch gedacht, das ich bei Bit 128, in eine Subroutine gehen werde, und solange die beiden Ausgänge für die richtung des Motors auf 0 schalten, wie der Motor erstens zum bremsen braucht und der Strom an den Transen abbaut.


    Ich warte dann in der Subroutine so lange, bis entweder Bit 127 erreicht wird, oder Bit 129 bis der nach einer bestimmten zeit wieder in die ADC auswertung geht, so wie hiervor beschrieben.


    Nur habe ich ja da das beschriebene Problem!



    Ich werde wie von Steve vorgeschlagen den L293D nehmen und dan dessen motorausgängen eine Mosfet H-Brücke nach schalten.
    Dieser IC funktioniert denke ich wie die Schaltung mit den Transistoren, wo ich dann beide Eingänge des L293D auf 0 ziehe, um den Motor zu bremsen.


    Nur der Richtungswechsel soll bewusst träge werden, da das "Gefährt" in echt auch nicht schnell die Richtung ändern kann, zumindest damals.
    Ich habe also bis zu 1 Sekunde Zeit die Richtung zu ändern, also zeit genug.


    Hast du damals auch mit 3D Sticks gearbeitet, also Joysticks und wenn ja, wie hast du das HW / SW umgesetzt für die Ansteuerung, bzw. wie weit gingen deine Gedanken dazu?

  • War eine TOTAL andere Anwendung: Ziel vorgeben und statt mit Schrittmotor halt mit einem gewähnlichen Servomotor genau ankommen. Poti/ADC für die Position. Und ein Regler, der positioniert ohne daß der Motor zu weit fährt.
    War nur als Hardware - Anregung gedacht, weil Motor mit eigener H-Brücke war ganz ähnlich nach deiner Schaltung ganz oben gebaut und sehr suboptimal.
    Aber klar wenn du die H-Brücke 4 Kanal ansteuerst und in der Software Totzeiten einbaust, das dürfte gut gehen.

  • wegen: Wie mache ich das jetzt in BASCOM, das von 128 zu 0 = 127 sind und von 128 zu 255= 127 sind?!


    Der Stick macht 0 bis 255.
    den ausgelesenen Wert frägst du ab ,
    -ist er größer oder gleich 127, dann ziehst du von 255 den gemessenen Wert ab und erhälst somit einen Bereich von 127 bis 0
    -else ( also alles andere, das wäre alles unter 127) , hier übernnimmst du einfach den Wert und hast somit ein Bereich von 0 bis 127
    Welches Beireich "nach vorn" und welcher "nach hinten" entsprich, das muss du wissen.


    Willst du tatsächlich wert 128 für Bremse nutzen , dann frägst halt am Anfang alles größer 128 ab, und wertest 128 getrennt aus.


    if ( messwert >128 ) { mein_nutz_wert = 255-messwert; Motor drehrichtung umkehren}
    if (messwert == 128 ) {Motoren bremsen}
    else {mein_nutz_wert = messwert; Motor drehrichtung umkehren}