Hallo zusammen, Projekt : Tachoansteuerung über Pc und Microcontroller. Tacho : Ford Mondeo Mk II M.C: ATMEGA8 Ich Habe ein Paar Fragen Bezüglich der Tachoansteuerung. 1. Gibt es eine Möglichkeit die Daten die Vom PC- Spiel ausgehen irgendwie anzeigen zu lassen ? Oder kennt sich einer damit aus?! 2. Zurzeit läuft Das RPM Tacho über PWM mit ICR und OCR1A und das KM/H Tacho über Delay. Kann man den OCR1B oder OCR2 auch mit einer Veränderbaren Freqzuenz betreiben (ICR2 geht nicht) oder ist das gar nicht möglich? hier ein Kleiner Ausschnitt (Zurzeit Stell ich Die Werte Selbst zur Verfügung das soll halt dann über eine Variable geschehen): do { ICR1=50000; // Frequenz wird vom RPM geändert _delay_ms(5000); ICR1=10000; // Frequenz wird vom RPM geändert _delay_ms(2000); PORTD |= (1<<PD5); _delay_us(8000); // Frequenz wird vom KMH Tacho geändert PORTD &=~ (1<<PD5); _delay_us(8000); // Frequenz wird vom KMH Tacho geändert _delay_ms(5000); }while(1); 3. wie verknüpfe ich den ATMEGA8 mit dem Pc spiel (Software)? vielen Dank im Vorraus MfG Emuth
:
Bearbeitet durch User
Hallo Kevin, Kevin E. schrieb: > 1. Gibt es eine Möglichkeit die Daten die Vom PC- Spiel ausgehen > irgendwie anzeigen zu lassen ? Zum Glück gibt es nur ein PC-Spiel oder habe ich was überlesen ? MfG von der Spree Frank
Als Spiel wollten wir DIRT3 verwenden. Zum Auslesen der Daten für Geschwindigkeit, Drehzahl etc. wollten wir das Freeware-Programm X-Sim verwenden, welches die Daten über eine serielle Schnittstelle zur Verfügung stellt. Mir geht es aber um die Werte die das Spiel abgibt (0011 0110 ... Bitblöcke).
:
Bearbeitet durch User
Ja X-Sim gibt ja nicht nur RPM aus, es gibt ja so ziemlich alles aus was es gibt, ich habe da auch mal programmiert in die gleiche Richtung. Bei X-Sim gibt es da aber genug Dokumentation die das Protokoll beschreibt. Im übrigen, eine sehr schöne Idee.
Das Projekt aufteilen in kleinere Abschnitte: a) PWM-Grundlagen:https://www.mikrocontroller.net/articles/AVR-Tutorial:_PWM b) Daten über serielle Schnittstelle einlesen:https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Der_UART c) oder Tacho mit Servos ausstatten und diese Variante ausprobieren: http://www.x-sim.de/manual/hardware.html Viel Erfolg, ist jedenfalls machbar: https://www.youtube.com/watch?v=-KFoktBKnLk
:
Bearbeitet durch User
Ja das haben wir auch schon versucht aber das alles im Zusammenhang zu bringen fällt uns extrem schwer da wir theoretisch neu auf dem Gebiet Microcontroller sind. hat eventuell einer so ein Projekt oder ähnliches programmiert ? MfG Emuth
Draco schrieb: > Ja X-Sim gibt ja nicht nur RPM aus, es gibt ja so ziemlich alles aus was > es gibt, ich habe da auch mal programmiert in die gleiche Richtung. > > Bei X-Sim gibt es da aber genug Dokumentation die das Protokoll > beschreibt. Im übrigen, eine sehr schöne Idee. Könntest du dich mal per mail melden? k.emuth@live.de Danke MfG
So schwer ist das doch nicht, mach dir einfach einen FlowChart nach welchem ihr arbeitet, lasst euch Zeit und nicht stressen und lernt mit Misserfolg umzugehen. Meine Gedanken und Arbeitswege würden wie folgt aussehen: Daten im PC verarbeiten -> Daten über USART ausgeben -> Daten in den µC einlesen -> im µC die Daten verarbeiten -> Daten als PWM ausgeben. Einfach so nach und nach abarbeiten und schon sollte das gehen, ein Problem nach dem anderen lösen. Das Ziel vor Augen halten aber nie alles immer im Überblick behalten wollen. Eins nach dem anderen. Ist nen schönes Projekt übrigens.
Hier mal meine damaligen Ergebnisse, ich bin damals übrigens nicht über X-Sim gegangen, sondern habe den Telemetrie Datenstrom direkt abgefangen und umgewandelt (Ich glaube das war OutSim / OutGauge). Das Protokoll wird jedenfalls von vielen Fahrsimus benutzt, unter anderem Dirt, LfS,F1-20xx, DTM etc...
Mega ! bei dir lief das aber rein über den PC richtig? also keine Ableitung an den MC oder? Würdest du mir eventuell deine Email geben für Fragen in bezug auf das Programmieren? über den Thread ist es sehr nervig :s.
Also zurzeit ist das akuteste Problem, dass das RPM Tacho über PWM mit ICR und OCR1A und das KM/H Tacho über Delay. Kann man nicht zwei PWM Ausgänge mit je unterschiedlichen Frequenzen ansteuern also OCR1B und OCR2? Bitte um Hilfe MfG Emuth
Ja natürlich, du hast ja am Atmega8 insgesamt drei PWM Kanäle. OCR1A/B (PB1 und PB2) und OCR2 (PB3). Am cleversten wäre es, für Tacho und RPM nur OCR1 zu nutzen. Und dann die übergeben Werte mit OutputCompareMatch auf die zwei Kanäle zu legen.
So ich hab das ganze Zeugs nochmal rausgekramt und auch Dirt3 mal rausgesucht. Funktioniert tadellos. Ich weiß nun nicht welche Daten ihr draußen braucht, wie du die Eingangsdaten haben willst? (Über UART?!) Bekommst du eigentlich schon Daten aus deinem Spiel raus? Also da in X-Sim? Ich schreibe heute Abend mal nen SerialOut in C# und lasse sie mal durch einen Mega8 laufen. Jedoch kann ich, in ermangelung eines Tachos, sie nicht so schön ausgeben :D Aber ich müsste mal kramen, nen paar Servos müsste ich noch haben.
Hey Draco, kannst du mich mal bitte Per Email Kontaktieren? Email: k.emuth@live.de
Ach lass uns das hier machen :-) Hier ist die Fehlerquote wesentlich geringer als wenn nur zwei / drei Paar Augen drüber schauen. Ich habe nun mal die Relevanten Daten aus dem OutSim Stream herrausgezogen. “Leider“ übergibt Grid3 bloß die Grunddaten für z.b. einen Playseat. Daten für einen Tacho direkt werden nicht unterstützt (Lampen für Öl, Licht etc..) Geschwindigkeit, RPM und Gang werden aber ausgegeben. Bei LFS z.b. hat man zwei Streams, eine für die Sim und eine für die Gauge. Desweiteren bekomme ich bei Dirt3 auch Bloß die ersten 38byte (blauer Strich), den Rest leider nüch.
Hey zusammen, wollen das alles Step by Step verstehen. zurzeit wollen wir einfach nur Dem Microcontroller ein zeichen geben und das soll am Hyperterminal angezeigt werden. Leider funktioniert das nicht so ganz wir bekommen ein zeichen aber nicht das zeichen was wir eingeben. Im anhang der Quellcode / max232 verdratung und die Daten vom Hyperlink + ausgegebene zeichen. (Habe auch verschiedene Baudraten vom HL probiert es kommt immer ein anderes zeichen aber nicht das richtige) Findet da jemand einen Fehler?! MfG
:
Bearbeitet durch User
Deine Fuses hast du auch auf 10Mhz eingestellt? Normalerweise, nach diesem Syntax, müsste ja auch [Data] kommen. Probiere mal statt: UDR = ('x'); ein UDR = 0x78;
Kevin E. schrieb: > wir bekommen ein zeichen aber nicht das zeichen was wir eingeben. Für saubere serielle Kommunikation über RS232 brauchst du einen Quarz am ATMega.
>Probiere mal statt: UDR = >('x'); ein UDR = 0x78; Quark. Er sollte lieber USARTWriteChar nehmen. So bügelt er UDR ständig platt. Und für 1MHz und 4800Baud muss UBRR = 12 sein.
> muss UBRR = 12 sein.
was meinst du damit? kannst du mir eventuell das mit den Frequenzen mal
erklären? Mit dem USARTWritechar passiert bei mir nichts.
Das verstehe ich nicht, dieses Programm funktioniert jetzt und im Hyperterminal ist eine Baudrate von 9600 eingestellt. Wie genau berechnet sich das ??? MfG
:
Bearbeitet durch User
Soooo.... https://www.youtube.com/watch?v=21SYlRbjHyk ich habe nunmal auch eins fertig gemacht :D Hoch lebe die Pommesgabel ^^ Und hey, keine Kommentare zum Fahrverhalten, kostet ja sonst och 60 Mark und nen Punkt.
Hey , coole Sache haben es jetzt auch verstanden ,vielen dank für eure Hilfe !
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.