Forums - Elektronikzyndung

Hier kann man auch als Gast schreiben. Anonyme Beiträge sind möglich, aber nicht erwünscht, man sollte wenigstens seinen Namen drunter setzen.

Re: Forums - Elektronikzyndung

Beitragvon Richy » Do 22 Dez, 2022 19:08

andi hat geschrieben:@Richy
Servus, hast schon mal Zeit gehabt dir den Code anzusehen ?

Hallo Andi,

ich habe mal fix reingeschaut.
Möchtest du ehrliche Kritik oder eine, die der Seele nicht wehtut? :ugly:

Na, ich probiere es mit konstruktiver Kritik, auch wenns mir auf den Nägeln brennt. :weg:

Fangen wir mit der Android-App aus dem git-Repo an:
Ich habe bisher noch keine Android-App geschrieben, daher bleibe ich mal allgemein.
1. Von allen Sprachen dieser Welt, musste es unbedingt Pascal sein? Java oder C++ wären halt etwas zeitgemäßer und Objektorientiert.
2. Kommentare wären fein.
3. Gui und Funktion trennen auch.
4. Aufteilen auf mehrere Dateien.

Der eigentliche Code für den µC gefällt mir besser. Da müsste man aber auch genau reinschauen, um den zu prüfen. Hast du ein Platinenlayout, welcher AVR wurde genau verwendet?

Folgendes ist mir aufgefallen:

1. In der Interrupt-Routine "handleSensor" führst du die kompletten Berechungen inkl. vieler if/else-Verzweigungen durch. Diese Funktion sollte jedoch so kurz wie irgendwie möglich gehalten werden, d.h. nur den Timer abrufen, dessen Wert speichern und die Funktion verlassen. Die eigentliche Berechnung führst du dann in einer Funktion auf, die vom main-loop zyklisch aufgerufen wird.
Der Hintergrund ist folgender: Im Interrupt blockiert man den Rest vom µC ziemlich gewaltig. if/else-Anweisungen gehören mit den zu "kostspieligsten" Aufrufen überhaupt, d.h. sie kosten massiv Rechenzeit. Das beides kombiniert kann einem später
ziemlich den Programmlauf kaputt machen.

2. In der Main-Loop führt du, egal ob der Motor läuft oder nicht, die Konfiguration durch. Das halte ich für fehleranfällig und ist eigentlich nicht nützlich.

Daher folgender Vorschlag:
- Konfiguration in eigene Routine auslagern.
- diese in der Main-Loop nur ausführen, wenn für eine bestimmte Zeit (vllt. 5s) kein Impuls mehr vom Geber gekommen ist.

Sauberer und verhindert, dass wenn mal im laufenden Betrieb Mist über die serielle Schnittstelle kommt, auf einmal die Zündung Unsinn macht.
Generell würde ich die Konfiguration noch etwas mehr absichern als über den Empfang von 3 ASCII-Zeichen. Ein kleines Protokoll mit Prüfsumme macht das sicherer und verhindert ebenfalls ungewollte Verstellung der Zündung.
Ebenfalls würde ich noch eine Prüfung der empfangenen Zündungsimpulse auf Plausibilität empfehlen (anhand der Drehzahl und einer konfigurierbaren Winkelbeschleunigung am Motor).
Als Geber sollte man einen direkt aus dem Automotive-Bereich verwenden, die funktionieren und sind billig.

Nach meinen Erfahrungen mit meinem Tacho an der ES kann ich sagen, dass man sich dort noch auf einige Überraschungen gefasst machen sollte. KFZ-Umgebungen sind mit die dreckigsten, die es so gibt. :smt005
Das beste Werkzeug ist ein Tand in des tumben Toren Hand.
(eigene Erfahrung)
Benutzeravatar
Richy
Vielschreiber
 
Beiträge: 7965
Registriert: Mi 30 Sep, 2009 21:28
Wohnort: Tal der Ahnungslosen

Re: Forums - Elektronikzyndung

Beitragvon andi » Do 22 Dez, 2022 20:39

Servus,
Ich hab den Code nicht geschrieben :wink:
Laufen soll das auf einem ESP32 https://de.wikipedia.org/wiki/ESP32
Der läuft mit bis zu 240MHz das verleitet dazu "opulent" und nicht schlank zu programmieren :wink:
Außerdem hat der 2 Prozessorkerne, und man könnte sofern man kann beide Kerne getrennt ansprechen.
Integriert ist WLan und Bluetooth und min 4MB Speicher da kann man schon einiges ablegen.

Ich wollte eigentlich die ATMega verwenden, bin aber am direktem konfigurieren der Register gescheitert. Der ESP kennt sowas nicht.
Der Richard aus dem Rubo Forum hat eine eigene IDE "LunaAvr" entwickelt, in der man die Timer/Register wunderbar ansprechen konnte.
Leider ist der in der Zwischenzeit gestorben :(
In der Arduini IDE werden die Timer vorkonfiguriert und für viele Funktionen verwendet, man kann eingreifen, aber für einen Laien wie ich einer bin ist das etwas zu komplex :omg:
Ich bin ja nicht gerade damit groß geworden :lol:

Was können die Register:
Und das machen sie Hardwarenahe ohne Programmcode ;-)

Hochzählen und man kann den Zählerstand bei einem externem Interrupt abfragen und dann den Zähler wieder auf 0 Stellen
Einen Zählerstand setzen von dem Runtergezählt wird und bei 0 eine Aktion auslöst.
Nachdem man 3 Timer hat, lässt sich das wunderbar einsetzen.

Zeit zwischen 2 Impulsen / 360Grad = Anzahl der Impulse je Grad daraus leiten sich die Impulse bis zum ZZP ab = Zyndspule abschalten. (Man kann natürlich je nach Auflösung, in 0,5Grad u.s.w rechnen)
Beim Impuls am OT beginnt ein Zähler runter zu zählen und bei 0 wird die Zündspule eingeschaltet. (Da lassen sich Ladezeiten u.s.w berücksichtigen)

Ja und das geht eigentlich recht schlank, weil das Hardwarefunktionen des Atmel sind, gesetzt müssen die Register halt werden.
Ja und dann gibts noch eine "Funktion des Entprellens" am Eingang, das wird auch nur gesetzt, und ned "programmiert"

Steht alles im Datenblatt vom Atmel, wenn man versteht was da steht :omg: bei meinen nur rudimentären englisch Kenntnissen wird's nochmal schwieriger :omg:

z.B.

// timer functions

// ------------------------------------------------------------------------------
// Procedure to start timer
// ------------------------------------------------------------------------------
void startTimer()
{
TCCR1A = 0; // normal mode
TCCR1B = 0; // stop timer
TCNT1 = 0; // count back to zero
TCCR1B = bit(WGM12) | bit(CS11); // CTC, scale to clock / 8
if ( timerInterval > 65535 )
{
OCR1A = 65535;
}
else
{
OCR1A = timerInterval;
}
TIMSK1 = bit (OCIE1A);
} // end of startTimer

// ------------------------------------------------------------------------------
// Procedure to stop timer
// ------------------------------------------------------------------------------
void stopTimer()
{
TCCR1B = 0; // stop timer
TCNT1 = 0; // count back to zero
TIMSK1 = 0; // cancel timer interrupt
} // end of stopTimer

// ------------------------------------------------------------------------------
// Procedure to decrease timer interval
// ------------------------------------------------------------------------------

p.s.
Bluetooth ist dann natürlich auch nochmal schwieriger ;)
erfolgloser Russenkurbelwellenfeinwuchter,
Benutzeravatar
andi
Vielschreiber
 
Beiträge: 6138
Registriert: So 18 Nov, 2007 19:52
Wohnort: Ardagger Markt (Österreich)

Re: Forums - Elektronikzyndung

Beitragvon Richy » Do 22 Dez, 2022 23:20

Na der ESP32 ist schon mit sehr großen Spatzen auf sehr kleine Kanonen geschossen (oder andersrum :gruebel: ).

Ich hatte damals den Fehler gemacht, einen zu kleinen AVR zu verwenden, das hat mir viele Probleme bereitet.
Der ESP32 ist aber vielleicht ein bissel "too much".
Wobei, dann könnte man gleich noch eine Einspritzung, einen Tacho, einen Drehzahlmesser und so weiter integrieren :floet:

Der Atmel ist eigentlich halbwegs gut zu verstehen, weil nicht besonders viel dran ist. Man muss nur die Prinzipien kennen.
Das Entprellen vom Eingang hatte ich damals auch probiert, ist aber nur die halbe Miete. Schon im Umfeld der MZ hab ich mit meinem einzelnen Sensor unheimlich viel experimentieren müssen, um das Signal einigermaßen sauber hinzubekommen.
Und dann einmal ein falsch entstörter Kerzenstecker, eine falsche Kerze oder die Leitung einen Ticken zu nah am Zündkabel und alles war dahin. :omg:

Meiner Meinung nach sind 80% Hardware und 20% Software, nur kann einem keiner sagen, welche 20%, die am Anfang oder die am Ende. :ugly:
Das beste Werkzeug ist ein Tand in des tumben Toren Hand.
(eigene Erfahrung)
Benutzeravatar
Richy
Vielschreiber
 
Beiträge: 7965
Registriert: Mi 30 Sep, 2009 21:28
Wohnort: Tal der Ahnungslosen

Re: Forums - Elektronikzyndung

Beitragvon andi » Fr 23 Dez, 2022 15:18

Der Richard den ich erwähnt habe, hat eine Zündung verkauft, und die Schaltpläne online gestellt.
Das ist schon mal ein Anhaltspunkt wie man es macht.

Auch wenn der ESP32 mehr kann als notwendig ist, er kostet 10€ fertig aufgebaut mit USB Schnittstelle.
Und besonders groß ist so eine Platine nicht ;)
Es gibt keinen Grund ihn nicht zu verwenden.

Als ich das erste mal mit Programmieren in Berührung gekommen bin, haben wir für eine PDB-8 ( https://en.wikipedia.org/wiki/PDP-8 ) Programme geschrieben. Die Ausgabe erfolgte auf Fernschreibterminals auf Endlospapier, und gespeichert haben wir unsere Programme auf Lochstreifen :wink:
Programmiersprache war Fortran :wink:

Das ist jetzt über 40 Jahre her, vor ca. 2 Jahren hab ich mich aus Interesse ein wenig mit Arduino beschäftigt. Mir fehlen leider alle Grundlagen :omg:

lg
Andi
erfolgloser Russenkurbelwellenfeinwuchter,
Benutzeravatar
andi
Vielschreiber
 
Beiträge: 6138
Registriert: So 18 Nov, 2007 19:52
Wohnort: Ardagger Markt (Österreich)

Re: Forums - Elektronikzyndung

Beitragvon hiha » Fr 23 Dez, 2022 15:37

Da bin ich beim Andi. Bereits ein Arduino ist für den Zweck overkill, ein 32er ist weitblickend für zukünftige Erweiterungen.
Gruß
Hans
"Im Übrigen bin ich der Ansicht, dass Profifußball verboten werden muss."
Benutzeravatar
hiha
Älterer Herr und Motorenkenner
 
Beiträge: 17555
Registriert: Fr 28 Okt, 2005 10:01
Wohnort: Neubiberg b. München

Re: Forums - Elektronikzyndung

Beitragvon lallemang » Fr 23 Dez, 2022 16:33

+1 Heutzutage tragen Leute einen Mainframe in der Hosentasche, zum Telephonieren. :smt102










Ohja Fortran auf'ner IBM mit Lochkarten ... :roll:
Aber 2 Jahre später bin ich mit Pascal immerhin schon bei den lebenden Sprachen angekommen :rofl:
Wherever You Go There You Are :gruebel:
Benutzeravatar
lallemang
Moderator
 
Beiträge: 17568
Registriert: Mo 10 Apr, 2006 01:18
Wohnort: im Osten des Südwesten

Re: Forums - Elektronikzyndung

Beitragvon hiha » Fr 23 Dez, 2022 16:41

Wenn Du einen sicheren Job willst: Fortranprogrammierer werden händeringend gesucht...
Gruß
Hans
"Im Übrigen bin ich der Ansicht, dass Profifußball verboten werden muss."
Benutzeravatar
hiha
Älterer Herr und Motorenkenner
 
Beiträge: 17555
Registriert: Fr 28 Okt, 2005 10:01
Wohnort: Neubiberg b. München

Re: Forums - Elektronikzyndung

Beitragvon lallemang » Fr 23 Dez, 2022 19:04

Ich fühl' mich geehrt, Hans :smt049

Händeringen ging veilleicht noch, Haareraufen nicht.
Und mein ZNS besteht darauf, da§ wir uns an nichts erinnern ;-)

Das ist 40 (vierzig) Jahre her und der Puls steigt sofort :ugly:
Wherever You Go There You Are :gruebel:
Benutzeravatar
lallemang
Moderator
 
Beiträge: 17568
Registriert: Mo 10 Apr, 2006 01:18
Wohnort: im Osten des Südwesten

Re: Forums - Elektronikzyndung

Beitragvon Dreckbratze » Fr 23 Dez, 2022 19:07

Ich kann Fertan streichen, ansonsten hab ich keine Ahnung wovon ihr redet. :lol:
The idea is to die young as late as possible
Benutzeravatar
Dreckbratze
Vielschreiber
 
Beiträge: 20443
Registriert: Mo 27 Jun, 2005 20:16

Re: Forums - Elektronikzyndung

Beitragvon schnupfhuhn » Fr 23 Dez, 2022 19:42

Technische Altsprachler halt, Fortran, Cobol, so Zeug. Wennst es wirklich kannst schei****en sie Dich mit Arbeit (und Geld) zu. :fiessgrinz:

Bläd wäre es nicht mit dem ESP anzufangen wenn er eh nix kostet. Wer es unbedingt ausfinkeln will kann es dann ja wenn es läuft auf einen Attiny anpassen...
:-) Putzt die Rahmen und stellt sie bereit! :-)
schnupfhuhn
Vielschreiber
 
Beiträge: 3772
Registriert: Fr 29 Mai, 2015 21:03
Wohnort: Wuppertal

Re: Forums - Elektronikzyndung

Beitragvon Richy » Fr 23 Dez, 2022 20:24

Ich hab mich mal an Brainfuck probiert, aber bei Whitespace musste ich passen, ich konnte die Codelistings nicht ausdrucken, es kamen nur leere Seiten raus. :gruebel:
Das beste Werkzeug ist ein Tand in des tumben Toren Hand.
(eigene Erfahrung)
Benutzeravatar
Richy
Vielschreiber
 
Beiträge: 7965
Registriert: Mi 30 Sep, 2009 21:28
Wohnort: Tal der Ahnungslosen

Re: Forums - Elektronikzyndung

Beitragvon Nanno » Fr 23 Dez, 2022 20:25

Dreckbratze hat geschrieben:Ich kann Fertan streichen, ansonsten hab ich keine Ahnung wovon ihr redet. :lol:


Montag 8 Uhr, also? :-D

Man muss gar ned bis Fortran oder Cobol gehen, wenn man sich selber das Leben (halbwegs) schwierig machen will als Firma, damit man (gute) Programmierer findet - such mal nach Hardware-nahen C Programmierern...
Frei ist, wer frei denkt.

Blog:http://greasygreg.blogspot.com/
Benutzeravatar
Nanno
Vielschreiber
 
Beiträge: 19619
Registriert: Do 23 Jun, 2005 07:43
Wohnort: Linz, Österreich

Re: Forums - Elektronikzyndung

Beitragvon schnupfhuhn » Fr 23 Dez, 2022 20:47

Da haben wir welche, aber die geben wir nicht her ;)
:-) Putzt die Rahmen und stellt sie bereit! :-)
schnupfhuhn
Vielschreiber
 
Beiträge: 3772
Registriert: Fr 29 Mai, 2015 21:03
Wohnort: Wuppertal

Re: Forums - Elektronikzyndung

Beitragvon Richy » Fr 23 Dez, 2022 23:12

Mit Speck fängt man Mäuse. :wink:

oder:

Gute Programmierer gibt es genug, aber nicht genug gute Programmierer, die für einen Hungerlohn arbeiten. :smt005

Aber ich glaub, wir schweifen ein wenig ab.
Das beste Werkzeug ist ein Tand in des tumben Toren Hand.
(eigene Erfahrung)
Benutzeravatar
Richy
Vielschreiber
 
Beiträge: 7965
Registriert: Mi 30 Sep, 2009 21:28
Wohnort: Tal der Ahnungslosen

Re: Forums - Elektronikzyndung

Beitragvon hiha » Sa 24 Dez, 2022 06:33

Der Vater einer guten Freundin aus den USA arbeitete noch mit 90 (bis zum Ableben vor 5Jahren) für eine Versicherung als Mainframe-Operator, so mit Lochkarten und so.
Und zum "Gute C-Programmierer gibts viele" frag ich mal den Kleinbasti. "Viele" UND "gute" schließ ich jetzt mal aus.
Gruß
Hans
"Im Übrigen bin ich der Ansicht, dass Profifußball verboten werden muss."
Benutzeravatar
hiha
Älterer Herr und Motorenkenner
 
Beiträge: 17555
Registriert: Fr 28 Okt, 2005 10:01
Wohnort: Neubiberg b. München

VorherigeNächste

Zurück zu Gästebuch und Quasselecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron