Forum: Mikrocontroller und Digitale Elektronik Feedback zu Schaltplan für Roboterplatine


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Jan (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Alex G. (dragongamer)


Lesenswert?

Bin leider nicht bewandert genug um dich beraten zu können, aber die 
Projektidee gefällt mir! :)

von RP6conrad (Gast)


Lesenswert?

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.

von Jan (Gast)


Lesenswert?

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.

von Rene K. (xdraconix)


Lesenswert?

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?

von H.Joachim S. (crazyhorse)


Lesenswert?

Ich empfehle dir ein 4Lagen-Layout.

von RP6conrad (Gast)


Angehängte Dateien:

Lesenswert?

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

von Jan (Gast)


Lesenswert?

Rene K. schrieb:
> 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?

momentan 4 von diesen hier:
https://www.ebay.de/itm/DC3-6V-Verbesserte-Smart-RC-Auto-Robot-Gear-Motor-Rad-fur-Arduino-Ersatzteil-Fla/143134462637?hash=item21537a92ad:g:QaAAAOSwlddcZ~fJ

sind zwar auf 6v asugelegt, aber die H-Brücken müssen ja nicht komplett 
aufgedreht sein.
Hab jetz doch mal geschaut, der MC33926PNBR2 sieht ganz gut aus für 
miene Zwecke oder nicht? Würde auch platz sparen auf der Platine.
https://de.farnell.com/nxp/mc33926pnbr2/motortreiber-dc-b-rstenm-5a-qfn/dp/2775962?st=MC33926

H.Joachim S. schrieb:
> Ich empfehle dir ein 4Lagen-Layout.
Da hast du wohl recht, konnte mich aber noch nicht dazu durchringen, 17 
Euro im Monat für Eagle zu bezahlen

von RP6conrad (Gast)


Lesenswert?

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 ?).

von Jan (Gast)


Lesenswert?

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?

von RP6conrad (Gast)


Lesenswert?

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 !

von Jan (Gast)


Lesenswert?

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.

von Jan (Gast)


Lesenswert?

RP6conrad schrieb:
> Soll functionieren,
> muss aber die Masse leitung unterbrechen

was meinst du mit Masseleitung unterbrechen?

von RP6conrad (Gast)


Lesenswert?

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.

von MaWin (Gast)


Lesenswert?

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.

von Schorsch X. (bastelschorsch)


Lesenswert?

Ich kann den DRV8844 empfehlen. Für etwas höhere Ströme den DRV8412.

von Thomas Malwinter (Gast)


Lesenswert?

Sieht für mich nach Eagle aus. Kannst du die Dateien hochladen?

von Jan (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Elektro Heini (Gast)


Lesenswert?

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

von H.Joachim S. (crazyhorse)


Lesenswert?

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.

von Jan (Gast)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.