Robot-Car-Projekt

Begonnen von Ottmar, 10.06.2023, 11:06:29 CEST

Vorheriges Thema - Nächstes Thema

Ottmar

Hallo zusammen!
Hat jemand Lust mit mir die programmiertechnische Problemstellung eines RobotCars per MPLAB-Assembler anzugehen?
Vielleicht ist jemand auch damit beschäftigt oder interessiert, wobei nur der letzte Anstoß zur Verwirklichung fehlt?

Hier eine knappe Übersicht

Artikel-Nr.: ROBOT CAR KIT 01 (z.B. Reichelt)
Hersteller: JOY-IT Art.Nr. ROBOT03
4-Rad Antrieb mit Getriebemotoren 9V,je 200mA
4xLiFePo4 Zellen (12,8V )

MCU*:  PIC16F1939, MPLAB 8.92, Assembler
Module: L298 als PWM-Motorsteller
1x HC-SR04 US-Modul mit Elektronik (Hindernis voraus)
2x IR-Modul Seitenabstand rechts/links (Hindernis re/li)
2x Geschwindigkeitssensor
1x Strommessung (Blockade erkennen)
1x Batteriespannung messen
1x LCD4x16/20 für Debugging, Betriebszustand
*Micro-Controller-Unit

Der Aufbau geschieht derzeit noch auf dem Breadboard. Die MCU ist vorläufig (hat Pins im Überfluss). Bluetooth, EUSART (RS232), PWM habe ich schon begonnen/implementiert.
Hier noch z.B. einige Antriebsfunktionen die verwirklicht werden sollen:
F,B,S usw  Bluetooth commands zur Antriebssteuerung:
F beide Antriebsseiten vorwärts
FL/FR  Vorwärtsfahrt Links-/Rechtskurve
S beide Antriebseite STOP
B beide Antriebsseiten rückwärts (backward)
BL/BR Rückwärtsfahrt, Links/Rechtskurve
+ / - Geschwindigkeit erhöhen/vermindern

Diese Umsetzung auf den Antrieb hakt noch gewaltig!

Anbei Bilder vom derzeitigen, vorläufigen mechanischen Stand des Cars, bzw. dem Aufbau auf Breadboard. (IR-Sensoren rechts/links) US-Sensor für Hindernisse vorn voraus)
Das Chassis und der Antriebssatz stammt von Reichelt. Gesteuert wird mit unterschiedlicher Drehzahl der Antriebsgruppe rechts/links.

Bis bald?
Grüße Ottmar

Ottmar

Hier noch die Bilder zum dereitigen Stand RoboCar
Ottmar

Ottmar

nochein Bild...

^Cobra

Interessieren würde mich es schon leider habe ich keine Zeit für solche Projekte. 
Und mein Wissen über pic ist 15 Jahre alt (Assembler) da werde ich dir leider nicht wirklich helfen können.
Bin aber gespannt wie es weiter geht. 
Viel Erfolg und Spaß beim Basteln 

Cobraschock

Ottmar

Nunja, jeder so wie er kann... ;)
Bin mir auch nicht sicher ob ich die richtige Bluetooth-App habe, Im Moment erzeugt jeder Touch nur einen einzelnen Befehl. Ok für Fahrtrichtung. Für Speed wäre koninuierlich besser, also beim Touch eine Befehlsfolge z.B. +++++++ zur Erhöhung der Fahrgeschwindigkeit. Vielleicht weiß mir jemand eine passend App?
Ottmar

picass

#5
Hallo Ottmar!

Tolles Projekt von dir! Wird 'ne große Bereicherung!
Mitmachen von mir? Satz mit "X", wird wohl nix! Leider!

Dabei bin ich zumindest innerlich auch auf dem Absprung, irgend so'n Karren-Bausatz zu kaufen und die Programmierung der Steuerung zu erlernen, weil ich zwei Enkel habe, von denen der "Erste" im passenden Alter von 12 Jahren ist. Aber....
- zum Einen bin ich seit einiger Zeit total überfrachtet mit meinem altem Rollladen-Projekt. Die Mucken der µC-Steuerung habe ich im Griff, aber es steht die Überarbeitung und Neufassung der bald 25 Jahre alten Hard- wie Software an. Und just jetzt verabschiedet sich die Elektronik in einem der Rollladenmotoren. Da muss der R-Laden aufgerissen, fast alle rausgerissen werden, Mot wechseln, Aufhängung wechseln, etc., etc.
Dazu kommt, das bei dem beabsichtigten eigenen Versuch nicht daran gedacht ist, bis ins Detail Hardwarekomponenten (HwK) in Assembler anzusteuern. Da schaue ich mal, was es an einfacher Prog-Sprache am Markt gibt.
Auch das sei noch gesagt, wenn auch ungerne: Etliche der Techniken fürs Ansteuern der HwK habe ich entweder noch gar nicht ausprobiert, oder es liegt noch sehr im Anfängerbereich. Bis ich mich da eingearbeitet hätte... Dafür fehlt mir in der Tat jetzt auch die Zeit.
Das bedauere ich, denn ich finde dein Projekt unheimlich gut. Werde mich aber wohl auf die Rolle des Beobachters begeben müssen.
Die MPLAB-Version ohne "X" ist doch eine inzwischen wirklich alte. Möchest du nicht wenigstens eine aus der X-Version bis Vers. 5.35 verwenden? Die Allerneuste ist quasi eine komplett neue Programmiersprache, die mit ihren beiden Vorgängerversionen nur noch den Oberbegriff gleich hat.
Grüße, picass

Nachtrag: habe gerade bei Reichelt geschaut. Das eigentliche Fahrgerät ist mit 20 € ja recht preiswert. Aber wie wird das gesteuert? Eine Art Lenkung habe ich auf die Schnelle nicht gesehen.

Ottmar

Hi picass,
Dein Zuspruch freut mich. Das ASM des alten MpLab 8.92 hab ich so einigermaßen drauf und die MCU's die ich verwende sind noch alle damit verwendbar. Es ist einfach spannend für mich die entsprechenden Funktionen auszutüfteln.
Gelenkt wird das RoboCar mit unterschiedlicher Drehzahl der rechts- / linksseitigen Räder.

Ich weiß jetzt nicht so recht, wie ich da nicht direkt damit befasste Interessierte daran teilhaben lassen könnte.
Da ist es schon einfacher auf konkrete Fragen zu antworten oder wenn jemand ein ähnliches Projekt vor sich liegen hat.
Grüße von Ottmar
P.S. Viel Erfolg bei Deinem Rolladenprojekt!

picass

#7
Hallo Ottmar!
Es tut mir in der µC-Seele weh, an deinem Projekt voraussichtlich nicht teilnehmen zu können. :( Zumindest "begleiten" - also dauernd verfolgen - würde ich es schon. Vielleicht kann ich in irgendeiner wenn auch eher geringen Weise was beitragen. Wie hälst du es z.B. mit dem Routen von Platinen? Selbst mache ich so was sehr gerne, evt. gibts da ja 'nen Ansatz.
Der zugrunde liegende "Karren" - pardon für die respektlose Bezeichung - zeichnet sich aus durch geringen Preis und Vierrad-Antrieb. Letzteres spräche für extreme Geländegängigkeit. Leider wird das aber durch das Fehlen einer echten Lenkung im wahrsten Sinne des Wortes ausgebremst. Stelle ich mir auch schwierig vor, das Lenken in so indirekter Weise umzusetzen. Das liefe dann so ähnlich wie bei Panzern: die kurven-innere Kette wird gebremst, rsp. nicht angetrieben, die kurven-äußere bekommt zusätzliche Energie. Das wird 'ne Herausforderung für den Programmierer.

Das MPLAB: da würde ich dir dringend - sehr dringend - zu der "mittleren" Version raten, also der mit einem nachfolgenden "X" bis max. v5.35. Die Syntax der Befehle ist bis auf ganz wenig Ausnahmen identisch, aber... aber es fällt die Notwendigkeit der dauernden Bank-Umschaltung weg und vor allem ist man damit näher an aktuellen Prozessoren. Das merke ich gerade bei meinem Rollladenprojekt. Der stonealte PIC16F84 - befüllt mit Progs aus dem alten Nicht-"X"-MPLAB - ist entweder auf dem Markt nicht mehr zu bekommen oder kostet über 8 €. Der von mir bislang bevorzugte "Nachfolger" PIC18F14K22 ist noch zu aktzeptablen Preisen erhältlich, aber von Microchip auch schon fast abgekündigt. Ein pin-kompatibler, aktueller Nachfolger des Nachfolgers ist mit erweiterten Funktionen auch für weniger als 2 € erhältlich und findet die volle Unterstützung mit Progs, Entwicklungsboards, Sonderaktionen, etc., etc.
Wenn ich heutzutage irgendwas bearbeite, dann versuche ich schon, die Oldies auszumustern, weil Aktuelles besser erhältlich, sehr viel preiswerter und vor allem auch voll unterstützt wird.
Grüße, picass

Ottmar

Hallo picass!
Es ist nett von Dir und wirklich freundlich, mir mit dem Erstellen einer Platine aushelfen zu wollen. Allerdings wird die Platine, sobald ich den Breadboardaufbau nicht mehr brauche, etwa so wie eine Arduino-Uno Platine aussehen. Hab mal einen Rohentwurf als Bild angehängt.

Mein Ziel ist nun wirklich nicht, daß ich mit dem RoboCar durch das Gelände preschen möchte. Vielmehr soll es so gut es eben mal geht lenkbar sein ,um letztlich Hindernissen selbstständig  auf dem Zimmerboden ausweichen zu können. Ob mir das gelingt wird sich zeigen.
Natürlich habe ich schon MPLABX angeschaut und auch ein wenig herumprobiert. Aber derzeit möchte ich  nicht umsatteln. Das Banking ist natürlich nicht gerade geschickt, hält sich aber nach der Initilisierung der MCU-Module/Register iim eigentliche Code-Ablauf in durchaus erträglichen Grenzen.

Mit der Zeit haben sich bei mir eine ganze Anzahl von unterschiedlichen Pic's angesammelt, das  reicht  meinem ersten 16F84 weiter über 16F6... 16F1..  midrange bis zu den 18F... 18F24.... Da ich ja von Deinem bevorzgten Pic18F14K22 gelesen habe, konnte ich es mir nachtürlich inzwischen auch nicht verkneifen mich mit dessen Innenleben zu beschäftigen...

Ich ziehe auch fast nie ein Projekt bis zum fertigen Gerät durch. Mir geht es hauptsächlich um das Verständnis und den Gebrauch der Module sei es Timer, ADC, Comparatoren PWM, Touch. SR-Latch und und und...
Wenn der Testaufbau  meine  Erwartungen erfüllt hat, wird dieser meist auch aufgelöst. Nur wenige Projekt fanden bisher in einem Gehäuse ihren Platz. Das sind z.B.  meine DCF77-Uhr mit dem 16F628, ein Kondensator Kapazitätsmessgert, die Messung des Innenwiderstandes von von  Enzelzellen (Batterien-/Akku). Ein LIPo-Lader ist vor Kurzem fertig geworden, aber ein Gerät lohnt sich für Einzelzellen nicht, da  gibt  es zum Spottpreis break-out Platinchen mit USB-Buchse und speziellem Ladechip.

Heute versuche ich mal einen groben Einblick in die erste Phase der Antriebssteuerung zu geben (vgl. angehängte Pdf-Datei). Anmerkung dazu: Den ASM-Code pflege ich stets  ausführlich zu dokumentieren, teils mit Übernahme des Textes aus dem Datenblatt.
mit Grüßen Ottmar

picass

#9
MPLAB: Ich hatte es kurz angesprochen, möchte nur noch mal darauf hinweisen, dass MPLAB X keineswegs gleich MPLAP X ist. Da hat es ab Version 5.40 nicht nur einen Paradigmen-Wechsel gegeben, da ist quasi eine ganz neue Sprache entstanden. Und die ist aus meiner Sicht verdammich schwer zu erlernen. Den irren Aufwand für solchen Umstieg werde ich mir auf keinen Fall antun. Bis v.5.35 alles paletti, danach Tabula Rasa.

Zitat von: Ottmar in 12.06.2023, 13:38:21 CESTIch ziehe auch fast nie ein Projekt bis zum fertigen Gerät durch.
>:D  >:D

Wenn du in meine Regale mit gesammelter Elektronik aus etlichen Jahrzehnten schauen könntest, würdest du eine Unmenge an Schaltungen finden, aber so gut wie keine mit Gehäuse. Lange Zeit war mein meist gebrauchtes Netzteil in einem Karton untergebracht. Seit einiger Zeit und natürlich für wichtige Anwendungen wie dem Rollladenprojekt finde ich mich aber auch zum Gehäuse-Verbau bereit. In deinen Maintext schaue ich gleich mal rein.
Grüße, picass

vloki

Zitat von: picass in 12.06.2023, 19:00:46 CESTDa hat es ab Version 5.40 nicht nur einen Paradigmen-Wechsel gegeben, da ist quasi eine ganz neue Sprache entstanden.

Na ja, die eigentliche Sprache ist noch absolut die gleiche,
da die Befehle im PIC hardwaremäßig drin sind.
Da kann man durch einen neuen Assembler wenig ändern.

Drumherum, mit Anlegen von Variablen, Interruptvektoren, usw. dann schon.
Nervig, kann man sich aber mit etwas Willen schnell aneignen ;-)

Am meisten hat mich gestört, dass es die Templates nicht mehr/noch_nicht gibt.
Dann wäre der Umstieg ein Klacks...

Zitat von: Ottmar in 10.06.2023, 11:06:29 CESTHallo zusammen!
Hat jemand Lust mit mir die programmiertechnische Problemstellung eines RobotCars per MPLAB-Assembler anzugehen?
Vielleicht ist jemand auch damit beschäftigt oder interessiert, wobei nur der letzte Anstoß zur Verwirklichung fehlt?

Hier eine knappe Übersicht

Artikel-Nr.: ROBOT CAR KIT 01 (z.B. Reichelt)
...
Interessant, wenn ich gerade etwas mehr Zeit hätte,
könnte ich mir das auch vorstellen.

Wir benutzen solche Bausätze auch für erste Studierendenprojekte und
hier liegen einige davon rum ;-)

Kaufen tue ich die normalerweise hier:
https://www.roboter-bausatz.de/p/bausatz-4wd-smart-car-chassis-fuer-roboter

Meist allerdings diese (bekommt man gelegentlich für unter 6€)
https://www.roboter-bausatz.de/p/yourdroid-2wd-smart-car-chassis-fuer-diy-roboter
MPLABX  XC8  KiCAD

^Cobra

Nur mal in den Raum geworfen:
Solltest du Teile brauchen, ich kann mein 3D Drucker als Arbeitstier anbieten. Aber bitte nicht erwarten das ich 20 mal Drucke bis es Top aussieht, bin mehr der "es muss Funktionieren" Mensch. Wenn ein Zahnrad alle Zähne hat reicht mir das meist erstmal :P

Wenn ich die Zeit hätte würde ich vermutlich den Robi komplett selbst Drucken, die Platine Fräsen (ich habe immernoch
keine gefräst seit dem Umbau) und natürlich das Programm schreiben.
Aber wie das so ist kommt die Arbeit, Kinder,Haus,Garten usw. und dann siehts im Moment schlecht aus mit der freien Zeit.

Gruß

Cobraschock

picass

#12
Sehe ich das richtig, dass die Steuerung des Cars über Fernsteuerung erfolgen soll und das vom PC aus? Oder gibt es da 'ne App fürs Smartphone?

Jetzt kommt das, was ich selbst bei einigen meiner früheren Projekte, für die ich irgendeine Detailfrage hatte, bisweilen wenig schätzte: Keine Antwort auf meine Frage, stattdessen eine Replik wie solche: "Warum machst du es nicht (ganz) anders?"
Aus meiner Sicht erscheint mir die Beherrschung von gleich vier Motoren und das via Assembler als sehr aufwendig, zumal jeder Mot gleich zwei Funktionen ausführen muss: Antrieb und "Mithilfe" bei der Steuerung. Ein Motor an der Hinterachse und ein Servo vorne für die Steuerung wäre für mich leichter überschaubar.
Grüße, picass

Ottmar

Hallo zusammen,
freut mich daß einige aus dem Forum Interesse an meinem Projekt RoboCar zeigen. Nun Ja, den Bausatz habe ich nunmal schon erworben und es wird wohl auch kein Nachfolgermodell geben. Ich bleibe auch wenigstens für dieses Mal noch bei MPLAB 8.92.

@Cobraschock
Danke für das Angebot, aber alle benötigen Teile habe ich schon beisammen.

@picass
Gesteuert wird per Bluetooth und mit dem Smartphone. Bis jetzt bin ich bei der App "Arduino bluetooth" gelandet, welche aber nicht  unbedingt das Gelbe vom Ei ist. Es ist auch nicht beabsichtigt, alle 4 Motoren einzeln anzusteuern. Wie schon mal gesagt, die Motoren der Linken Seite haben gemeinsam ihre eigene PWL4 und die Motoren der rechten Seite ihre eigene PWL5.
Zitat von: picass in 14.06.2023, 09:58:39 CESTJetzt kommt das, was ich selbst bei einigen meiner früheren Projekte, für die ich irgendeine Detailfrage hatte, bisweilen wenig schätzte: Keine Antwort auf meine Frage, stattdessen eine Replik wie solche: "Warum machst du es nicht (ganz) anders?"
Welche Frage an mich war das?

Derzeitiger Stand: Die erste Erprobung der Motorsteuerung war ein Erfolg, also vor und zurück, ebenso die Einstellung des Duty Cycle, um die Motoren mal langsam, mal schneller laufen zu lassen.

Derzeit tüftele ich an der Steuerlogik.
Meine App gibt bei jedem Tastendruck nur einen Steuerbefehl in Form eines einzelnen ASCII-Zeichen aus, leider nicht als stream.
F = Vorrwärts, B = Rückwärts , L =Links, R=Rechts, S=STOP, + = schneller, - = langsamer

Die Logik muss etwa so aussehen, wobei stets das aktuelle Zeichen mit dem vorhergehenden kombiniert
wird.
Also 
F F  Vorwärts (2x Taste vorwärts)
F+L  Vorwärts Linkskurve (+ Taste L)
F+R  Vorwärts Rechtskurve(+ Taste R)
B    STOP (vom Programm) kein schlagartiges Umschalten Vor-Rück
B+B  Rückwärts
B+L  Vorwärts Linkskurve
B+R  Vorwärts Rechtskurve
F    STOP kein schlagartiges Umschalten Vor-Rück
Das Alles und und... soll auf einem HD44780-LCD Monitor dargestellt werden.

Bis dahin also voraussichtlich ein ziemlich ruckhaftes Fahrverhalten beim Richtungswechsel. Wenn es mir zu dumm wird komme ich wohl um eine 2-Knüppel-Fernsteuerung nicht herum (Gehäuse mit Bluethoothmodul und MCU). Der Knüppelweg läßt sich ja relativ einfach per ADC auslesen, braucht halt für simultanes Steuern 3 ADC-channels und mehr Rechenarbeit für die MCU (fosc=16MHz).

Zur Zeit kommt mir das schöne Wetter voll in die Quere 8) ... aber es regnet auch bestimmt mal wieder.

Mit Grüßen Ottmar

pic18

#14
Hallo, ich kann Dir hier nur bei der "Feinarbeit" helfen.

ZitatB+L  Vorwärts Linkskurve
B+R  Vorwärts Rechtskurve
ist dir da ein Fehler unterlaufen, müßte es nicht rückwärts Rechts- bzw. Linkskurve heissen?

Zitatdieses Mal noch bei MPLAB 8.92
Man kann auch bei MPLAB-X den alten Compiler installieren. Das mache ich, da ich tausende Seiten Text nicht überarbeiten möchte.

Viele Grüße
pic18 aus St. Peter-Ording

Schnellantwort

Name:
Verifizierung:
Bitte lassen Sie dieses Feld leer:
Geben Sie die Buchstaben aus dem Bild ein
Buchstaben anhören / Neues Bild laden

Geben Sie die Buchstaben aus dem Bild ein:

Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau