Da will ich auch mal mein neustes Projekt vorstellen. Ziel ist es einen einfachen Fahrzeugdecoder für das Faller Car System zu programmieren.
Pflichtenheft:
IR-Schaltbefehle 5 Geschwindigkeiten schaltbar Langsames Bremsen und Anfahren Licht Stoppen/Fahren über Magnet oder IR
Da das nur eine von vielen Baustellen ist wird es nur langsam voran gehen. Zur Zeit bringe ich noch Struktur in meine Dateien wie Standard Includ Dateien herrichten. Das wird auch noch einige Zeit in Anspruch nehmen. Benutzt wird hierzu erst einmal ein 16F84A. Ja der kann so gut wie gar nichts. Darum ja gerade. Damit ist man gezwungen Sachen wie PWM selber zu schreiben. Ach ja so Sachen wie Flankenerkennung, Vergleichsoperationen etc. muss man bei den 8 Bit PICs in Assembler auch selber schreiben. Der hat nur 35 Grundbefehle.
Programmiert noch jemand PICs in Assembler? Ist immer gut zu sehen wie Andere Probleme lösen.
Hier mal der Versuchsträger:
Hauptziel ist es für mich mal mit der IR-Kommunikation zu spielen.
Für das eigentliche Entwickeln ist jedoch der Versuchsträger nicht gedacht Dafür habe ich meine eigene Entwicklungsumgebung.
Der Berenner ist ein Brenner8 Rev. 5 von Sprut.de Diese Seite sollte sich jeder anschauen der was mit PIC´s machen möchte!!! Trägerplatte ist einfaches Sperrholz. Darauf sind dann die Module mit Abstandhaltern geschraubt. Daneben ist ein Breadboard angebracht. Damit kann man schnell jede Schaltung aufbauen. Ich liebe diese Dinger. Montiert seht ihr hier die Brenner8 Platine, die Platinen mit Grundbeschaltung für den 12F629, 16F684 und 16F84A und eine E/A-platine. Modulplatinen mache ich immer für Dinge die man häufiger brauchen kann. Zb. Motorplatine, H-Brückenplatine etc. Board, Brenner und die Grundplatinen kosten zusammen um die 25 Euro an Materialkosten. Also ein recht günstiger Einstieg. Sollte das ganze hier laufen kommt der Versuchsträger zum Einsatz. Danach wird erst eine Schaltung in SMD-Technik entworfen.
erstmal herzlich willkommen im Forum ! Klasse das du dich angemeldet hast !
Dein Projekt sieht auf jeden Fall sehr interessant aus ! Ich denke mal hier gibt es sicher den einen oder andere, der auch PICs mit Assembler programmiert ....
Was mich interessieren würde: Kommunizieren die Fahrzeuge auch untereinander? Also wird es eine Art "Abstandssteuerung" ähnlich dem DC Car System geben ? Das wäre auf jeden Fall ein sehr interessantes feature !
Nein erst einmal nicht. Ist auch mehr ein Hardware Problem. Sicheres Erkennen der Abstände und sichere Übertragung beider IR-Signale. Denke das ist eine Fummelarbeit für sich
schade, das wäre sicher eine sehr interessante Sache. Aber man kann ja erstmal "klein" anfangen. Bei DC Car ist das eigentlich garnicht viel drauf. Die IR LED´s zum Senden nach hinten sind direkt an einem Atmega8. Die IR Transistoren zum Empfang sind bei den älteren DC Car Decoder ( DC01, DC02 ... ) noch über einen extra Empfänger mit dem Decoder verbunden. Soweit ich weiß ist beim DC04 Decoder der IR Empfänger gleich mit auf dem Decoder.
schön, das noch Jemand was mit den altmodischen PIC's macht. Ich selbst Programmiere auch in Assembler und habe schon ein paar kleinere Projekte mit PIC's gemacht. IR-Kommunikation ist eine ganz einfache Sache, man muss sich nur vorher im Klaren sein, wie das Protokoll aussehen soll. Eine Abstandwarnung bzw -messung zu realisieren ist auch nicht sooo schwer, aber auch hier muss ich wissen, was ich will. Eine einfache Lösung ist mit wenigen Befehlen geschrieben und kann sogar den gleichen Sender und Sensor nutzen, wie die Steuerung selbst.
Hi Lars Ist ja prima. Na ja leicht ist eine Sache fast immer wenn man es schon mal gemacht hat. Wie ist denn dein Ansatz gewesen? Zeiterzeugung über Timer oder Laufzeit? Flankenauswertung oder Interrupt? Möchte möglichst wenig "Spezialfunktionen" nuzten so dass ich auf eine herkömmliche Flankenauswertung gehen möchte und mit dem Timer einen internen Systemtakt Erzeugen möchte auf den dann PWM und IR gemeinsam zugreifen können. Das Protokoll soll recht einfach gehalten sein denke mal 8 Bit (lässt sich einfacher verarbeiten) 1 Bit als Startbit (immer 1) und zwischen den Telegrammen dann eine Pause die etwas länger als ein komplettes 8 Bit Telegramm ist. Aber das ist alles noch ins unreine gesprochen.
Wie sollen sich denn die beiden Signale die ja unabhängig voneinander erzeugt werden nicht gegenseitig stören? Wenn z.B. eine "Kommunikationssender" und ein fahrendes Auto auf der gleichen Höhe senden?
mein Code für den Empfänger nutzt eigentlich gar keine 'Sonderfunktionen' also weder Interrupt, noch Timer. Alles wird zur Laufzeit selbst mit Registern gezählt. Die eigentliche Übertragung geht bei mir mit 'Infrarot-Marken' von 266µS. Die Zeit, die zwischen den Marken vergeht wird ausgewertet. Durch die Hybride Übertragung wird auch ein Manko des IR-Sensors aus getrickst, denn digital könnte man mit den mir bekannten IR-Demodulatoren keine 4 Kanäle mit 7 Bit Auflösung in 8mS Übertragen. Auch Für Deine Anwendung könnte ich mir ein 'Analoges' bzw. 'Hybrides' Protokoll gut vorstellen. 'Eine Entfernungsmessung' würde natürlich alle Frames während dieser Messung ungültig machen, aber da der Empfänger ja eh gerade mit der Messung des Abstandes beschäftigt ist, sollte das für das messende Fahrzeug egal sein. Andere Fahrzeuge in Reichweite der IR-Dioden würden natürlich auch kurz gestört, aber dann fällt bei denen halt ein Frame raus, das sollte mit einer guten Fehlererkennung zu lösen sein:)
Ich habe Dir dazu ja auch schon ein paar Infos per Mail zukommen lassen! :)