Hallo Community,
ich arbeite derzeit an einem Roboterprojekt und würde mich freuen, wenn
mir jemand Feedback zu meinem Schaltplan geben kann, da es sich hierbei
um mein erstes aufwändige Projekt handelt und sicher voller Fehler ist.
Ich versuche mal die Features etwas zu beschreiben, um den Plan etwas
klarer zu machen.
Was man auf dem Schaltplan sehen kann, soll eine Platine (designed als
Raspberry PI Zero Schield) sein. Mein Ziel ist es, ein Modul zu haben
(möglichst klein), auf dem sich alles befindet was man braucht, um einen
einfachen Roboter zu bauen der sich mittels LIDAR selbst lokalisieren
und 2D Karten aufnehmen kann.
Die zentrale Einheit ist der STM32F103, dieser soll über SWD durch den
Raspi remote geflashed werden können. Der MCU soll u.a. dazu verwendet
werden um die Antriebsmotoren anzusteuern. Es sollen sich jeweils zwei
Motoren Links und Rechts befinden (L293DD). Um die Drehzahl zu messen
möchte ich an jeder Seite eine Encoder-Scheibe anbringen, welche durch
eine Gabellichtschranke und Interrupts am STM32 abgelesen werden soll.
Damit es im Gehäuse nicht zu warm wird will ich einen kleinen 20mm
Lüfter einbauen, welcher über ein IRLML2505 angesteuert wird.
Das gleiche Bauteil möchte ich dazu verwenden, um zwei weiße LEDs zu
betreiben, welche als Frontlampe dienen.
Und noch einen weiteren um einen Motor anzusteuern, der den LIDAR
bewegen soll. Der LIDAR selbst ist lediglich ein TFMini mit einer
weiteren Gabellichtschranke, um die Position zu bestimmen.
Für Odometrie möchte ich ein IMU-Sensor (ICM-20948) verwenden und diesen
mit den Motordrezahldaten integrieren. (Mal sehen wie das Funktioniert)
Um eine RGB-Status-LED zu betreiben habe ich mir mal das PCA9533 Modul
ausgewählt, da dieses über I2C ansteuerbar ist und somit Bauteile und
Pins am MCU spart.
Außerdem möchte ich gern ein INA219 dazu verwenden, um den
Stromverbrauch zu ermitteln, um z.B. die Verbleibende Akkuleistung bei
aktuellem verbrauch zu berechnen.
Um das ganze zu betreiben brauche ich scheinbar vier verschiedene
Spannungslevel. 3.3v für alle am I2C hängenden ICs sowie dem STM32, 5v
für den Raspberry Pi und den LIDAR (dafür nehme ich einen billigen
Buck-Converter mit 4 Ampere) und 1.8v für die Logic des ICM-20948. Alle
Motoren würde ich mit der eingehenden Spannung direkt betreiben - dann
kann ich später vielleicht z.B. auch 12v Motoren betreiben, wenn ich
eine andere Spannungsquelle verwende, dachte ich mir.
Ich hoffe mein Vorhaben sowie der Plan ist verständlich.
Neben dem Schaltplan habe ich noch mein PCB-Routing hochgeladen, man
wird vermutlich nichts darauf erkennen können, aber vielleicht fällt
jemandem dennoch das ein oder andere auf.
Ich habe schon eine eine Version gebaut, bei der es wohl leider einen
Fehler in der 3.3v Stromversorgung gab und sie hat daher nicht
funktioniert, ich habe den Fehler denke ich korrigiert, aber es wäre
sehr ärgerlich noch eine Version zu haben bei der garnichts geht :D
Vielen Dank für eure Hilfe, ich bin für jede Art von Kritik und
Verbesserungsvorschläge sehr dankbar.
L293 Motortreiber ist nicht mehr von diese Zeit ! Hohe Verlustleistung,
fiel Spannungsabfall, fackelt schnell ab. Such eine moderne Fet
H-brucke.
Ausgange für (modellbau) Servos sind immer nutzlich, als auch analog
eingange (Sharp Distance sensoren). Wie sieht aus mit die Schnittstelle,
nur Wifi ? Eine uart mit BT (HC05) ist auch nutzlich, braucht du nicht
immer Wifi. Hasst du schon ein Prototyp gebaut auf eine Lochplatine ?
MFG, RP6conrad.
Alex G. schrieb:> Bin leider nicht bewandert genug um dich beraten zu können, aber die> Projektidee gefällt mir! :)
vielen Dank :)
RP6conrad schrieb:> Hasst du schon ein Prototyp gebaut auf eine Lochplatine ?
ich hab mit ein paar Breakout Modulen rumgespielt und mit dem L293d,
aber alles zussammen komplett noch nicht wirklich, damals aber noch mit
einem Teensy 3.2. Hab aber seither einiges gändert. Ist Teilweiße auch
relativ schwirig da es großteils SMD bauteile sind.
Den größten unbehagen habe ich bei den 3 Mosfets für Lüfter und
LIDAR-Motor, da ich noch keine Erfahrung mit diesen Bauteilen habe.
RP6conrad schrieb:> als auch analog> eingange (Sharp Distance sensoren)
Den Sensor hatte ich sogar damals eingeplant für meinen LIDAR, hab es
aber entfernt, da zum einen die analogen STM32 Eingänge nicht 5v
kompatibel sind und ich zum anderen Angst davor habe, dass ich den
Ground und Vref nicht richtig hinbekomme, sodass das gemessene nutzlos
wird.
RP6conrad schrieb:> Wie sieht aus mit die Schnittstelle,> nur Wifi ? Eine uart mit BT (HC05) ist auch nutzlich, braucht du nicht> immer Wifi.
Mit dem Gedanken hatte ich auch gespielt, hab es jetz aber eher mal
vernachlässigt, da ich es als Raspi Schield designed habe und dieser
auch mit Bluetooth agieren könnte. Als Erweiterungsmöglichkeit habe ich
Pins für die I2C Schnittstelle angebracht und theoretisch könnte man
anstatt den Gabellichtschranken ein UART-Modul anbringen, da es die
UART-Pins verwendet, oder den Raspi entfernen und die serielle
Schnittstelle von diesem verwenden.
RP6conrad schrieb:> Ausgange für (modellbau) Servos sind immer nutzlich
Das stimmt, darüber habe ich noch garnicht nachgedacht, ich muss mal
schauen, wie ich das unterbringe :D
RP6conrad schrieb:> L293 Motortreiber ist nicht mehr von diese Zeit ! Hohe Verlustleistung,> fiel Spannungsabfall, fackelt schnell ab. Such eine moderne Fet> H-brucke.
Der L293d hat den Vorteil, dass es einfach anzuschliesen ist, das es
sehr viele Anfänger Tutorials gibt. Nach Alternativen habe ich schon
ausschau gehalten, aber ich weiß leider nicht auf was ich achten soll,
weswegen ich so verblieben bin. Aber ich denke du hast.
Vielen Dank für die Antworten.
Was sollen denn da für Motoren drann? 2A Anlaufstrom für die Motoren
reichen? so mal übern Daumen - sind deine Leiterbahnen für ca. 10A
Belastung ausgelegt?
Ich verwende eine STM32 Discovery F100 platine. Bei Belegung von alle
pins ist es wichtig um die auf die richtige Functionen einzurichten,
beispiel :
Analog eingange auf Analog pins
Encoder A/B auf Timerpins, so kannst du ohne Interrupt geleich in
Hardware die pulzen zahlen. Functioniert bis sehr hohe frequenzen.
Modellbau servo auf Timerpins, mit eine 16 bit timer kan auf µs genau
diese pulsen generiert worden. Bestimmte timer haben 4 Kanalen !
UART (bt) auf fest, I2C auch fest. Bestimmte Lidar haben auch eine UART
Schnittstelle !
PWM fur H-brucke, auch auf Timerpins !
Mit eine FET etwas anzusteuern geht gut, aber : eine n-mosfet schaltet
nach masse, mit 3.3V brauchen sie ein Logic level fet !
Ein kurzes video : https://www.youtube.com/watch?v=fp8s_tlwyIY
RP6conrad schrieb:> Mit eine FET etwas anzusteuern geht gut, aber : eine n-mosfet schaltet> nach masse, mit 3.3V brauchen sie ein Logic level fet !
Danke für den Hinweis. Ist das bei dem IRLML2502 wirklich auch so? Ich
habe ihn aus diesem Thread. Leider sind mir die Datenblätter viel zu
kryptisch um herauszufinden ob es funktionieren wird
Beitrag "SMD Fet für 3,3V?"RP6conrad schrieb:> Analog eingange auf Analog pins> Encoder A/B auf Timerpins, so kannst du ohne Interrupt geleich in> Hardware die pulzen zahlen. Functioniert bis sehr hohe frequenzen.> Modellbau servo auf Timerpins, mit eine 16 bit timer kan auf µs genau> diese pulsen generiert worden. Bestimmte timer haben 4 Kanalen !> UART (bt) auf fest, I2C auch fest. Bestimmte Lidar haben auch eine UART> Schnittstelle !> PWM fur H-brucke, auch auf Timerpins !
Danke auch für diesen Hinweis, bei der Erstellung habe ich darauf
geachtet die Hardwareschnittstellen Pins zu verwenden und das alle
Interrupts/PWM ihren eigenen Timer-Kanal haben.
RP6conrad schrieb:> Ein kurzes video : Youtube-Video "Slalom met differentiaal robot"
Sieht gut aus. Verwendest du neben Odometrie noch andere Methoden zur
Positionsbestimmung? Wenn nein, wie lange dauert es ca. bis sich der
Drift bemerkbar macht?
ITLML2502 ist eine logic level n-channel mosfet. Soll functionieren,
muss aber die Masse leitung unterbrechen. Geht nicht immer, da die
Versorgungsspannung immer auf das teil bleibt !
Meine Robby macht diese slalom rein ueber odometrie, aber der drift baut
sich langsam auf. Gans wichtig ist die Auflosung von encoder (bei mir ca
0.02 mm/puls), mechanic und reibung. Auch ansteurung (trapezium profil)
von Motoren ist sehr wichtig. Auf eine glatte boden geht das fiel besser
wie auf teppig !
RP6conrad schrieb:> Diese Motoren soll ich vermeiden : absolut billig plastic getriebe, und> kein eingebautes encoder ! Ich habe gute Erfahrungen mit diese motoren :> https://www.banggood.com/search/encoder-motor-dc.html?sbc=1> Hier ein Bericht dazu : http://wiki.robotmc.be/index.php/Encoder_Motor> (Google translate ?).
Die Motoren will ich für die erste Version mal verwenden, bis alles
einigermaßen läuft. Aber das ist tortzdem ein guter Punkt, vielleicht
sollte ich meine Anschlüssle auf der Platine direkt so machen, dass man
Encoder-Motoren einfach anschliesen kann.
Ihre Schaltplan ist richtig, fets unterbrechen der Ground. Gate
widerstand soll ich etwas hoher wahlen (1k), das ist dan auch ein
absicherung when den fet mal durchschlagt.
Jan schrieb:> Ich hoffe mein Vorhaben sowie der Plan ist verständlich
Wie kommt man eigentlich auf due Idee, das Nebeneinanderklatschen von
Prinzipschaltbildern als Schaltplan zu verstehen ?
Weil Adafruit das aus Faulheit auch so macht ?
Es ist nicht zu erkennen, ob beispielsweise der DS18B20 ausreichend
abgeblockt ist, ob 0 Ohm als Vorwiderstand für 2 LEDs in Reihe passt, ob
der Lüfter per PWM geregelt werden soll (dank 1N4004 wohl nein), wie man
darauf kommt dass 2 LiPo in Reihe 8V haben (sie haben wohl eher 5 bis
8.4V)
Ein L293D für Motoren zu verwenden ist nun sowas von 80ger Jahre, aber
vielleicht reicht dieser billigste und uneffizienteste der Treiber ja,
weil die Motoren nicht mal 600mA Blockierstrom=Anlaufstrom haben.
MaWin schrieb:> Wie kommt man eigentlich auf due Idee, das Nebeneinanderklatschen von> Prinzipschaltbildern als Schaltplan zu verstehen ?> Weil Adafruit das aus Faulheit auch so macht ?
Was spricht dagegen? Ich dachte, die vielen Verbindungen an den MCU
würden es nur unnötig kompliziert machen, da überall verbindungen wären.
MaWin schrieb:> Es ist nicht zu erkennen, ob beispielsweise der DS18B20 ausreichend> abgeblockt ist
was meinst du mit abgeblockt?
MaWin schrieb:> wie man> darauf kommt dass 2 LiPo in Reihe 8V haben (sie haben wohl eher 5 bis> 8.4V)
das ist ein Standart Supply-Element von Eagle, daher habe ich es dazu
gesagt.
MaWin schrieb:> ob 0 Ohm als Vorwiderstand für 2 LEDs in Reihe passt
Das hätt ich vielleicht erwähnen sollen, die wiederstände für die LEDs
wollte ich nicht auf der Platine haben um ggf. noch mehr oder weniger zu
haben. 0Ohm wollte ich einfahc nur als Platzhalter drauf haben, falls es
doch mal nur eine ist oder so.
MaWin schrieb:> ob> der Lüfter per PWM geregelt werden soll (dank 1N4004 wohl nein)
Sollte eigentlich PWM werden, genauso wie bei den LED, wieso geht das
nicht? Ich dachte die Diode ist nur dafür da Rücklaufstrom
abzuwendenden, wenn der Motor z.b. anhält oder sich bewegt?
Schorsch X. schrieb:> Ich kann den DRV8844 empfehlen. Für etwas höhere Ströme den DRV8412.
Danke für den Tipp, ich schau mir die Bauteile später etwas genauer an.
Funktionieren die gut mit 2s LiPos? Da steht steht
Betriebsversorgungsspannung 8v, das muss ja nicht unbedingt immer
gegeben sein, z.b wenn die Batterien nur noch halb voll sind.
Thomas Malwinter schrieb:> Sieht für mich nach Eagle aus. Kannst du die Dateien hochladen?
Korrekt - ist im Anhang. Ich denke das Board muss ich neu machen. Die
Masse ist nicht wirklich gut verlegt.
Vielen Dank für eure Antworten.
Hi,
auch ich rate dir von den L293-Treibern ab, es finden sich bestimmt
brauchbare Moderne H-Brücken und man kann bestimmt auch mit einem
Gatedriver-IC und diskreten Mosfets geeignete Motorsteuerungen bauen.
Zu den zwei diskreten Mosfets: Es fehlt mir noch ein Widerstand (>=100k)
zwischen Gate und Source um sicherzustellen, dass im Hochohmigen zustand
der µC-Pins die Transistoren nicht durchschalten.
LG
Elektro Heini schrieb:> und man kann bestimmt auch mit einem> Gatedriver-IC und diskreten Mosfets geeignete Motorsteuerungen bauen
ach ne, nicht bei der Leistung. Da gibts genug fertigen Kram.
Elektro Heini schrieb:> Zu den zwei diskreten Mosfets: Es fehlt mir noch ein Widerstand (>=100k)> zwischen Gate und Source um sicherzustellen, dass im Hochohmigen zustand> der µC-Pins die Transistoren nicht durchschalten.
Du meinst einfach Pulldown-Widerstände oder? Stimmt, das kann nicht
schaden.
H.Joachim S. schrieb:> Da gibts genug fertigen Kram.
bei meinem Anfängerwissen hab ich auch nur so eine Chance, dass es
funktioniert :D