Forum: Mikrocontroller und Digitale Elektronik Drehzahlmesser


von DooMMasteR (Gast)


Lesenswert?

Hallo,

ich plane im Moment einen kleinen miniatur Bordcomputer für 
Roller/Motorräder.
http://uschok.de/~doommaster/BC-idee.svg
Wobei ich nur für die Entwicklung und zur Erleichterung des Nachbaus und 
der Modifikation auf Arduino setze, die Finale Version soll ihr eigenes 
Board bekommen, aber vermutlich dennoch Arduino IDE kompatibel bleiben.

Bisher geschafft sind:
-Temperaturmessung…TMP36 per externem ADC für Motornahe Anwendung, da 
ich 1-wire dort nicht traue
-Umgebungstemperatur per DS… weil einfach einfach einfach ist zumal so 
weitere 2 16bit-ADC-Kanäle für Erweiterungen frei bleiben.
-Batterygauge um Ladezustand und Spannung überwachen zu können (ggf 
weiterer DS an der Batterie)
-LCD für die Anzeigen
-3 Tasten oder vllt ein Clickwheel für die Bedienung

alles in allem recht einfach… einzig fummelig erscheint bisher der 
Drehzahlmesser

2 Varianten habe ich bisher im Kopf:
- Interrupt gesteuert… tut weh was die Programmierbarkeit für Anfänger 
angeht und leider ist es kein XMega mit Events
- Timer0 als Counter nutzen… auch das ist nicht so super, aber schonmal 
ne Ecke besser

Am liebsten wäre mir ein externes Tachometer per I2C oder ähnlichem… 
aber bisher ist mir soetwas noch nicht untergekommen.

Hat bezüglich des Drehzahlmesser jemand eine durchschlagende Idee?

von Michael H. (michael_h45)


Lesenswert?

DooMMasteR schrieb:
> Bisher geschafft sind:
Bisher in Laborumgebung...

> -Temperaturmessung…TMP36 per externem ADC für Motornahe Anwendung, da
> ich 1-wire dort nicht traue
I2C ist nicht weniger störanfällig.
Es hat seinen Grund, dass in KFZ-Umgebung differentielle Bussysteme zum 
Einsatz kommen.

> -LCD für die Anzeigen
Aber doch bitte kein so hässliches steinaltes wie im Blockschaltbild 
angedeutet.

> -Batterygauge um Ladezustand und Spannung überwachen zu können (ggf
> weiterer DS an der Batterie)
Integriert der IC denn auch wirklich analog und double-buffered? Sonst 
ist mit Ladezustand Essig... da kannst du genausogut die Spannung allein 
messen.

> alles in allem recht einfach… einzig fummelig erscheint bisher der
> Drehzahlmesser
>
> 2 Varianten habe ich bisher im Kopf:
> - Interrupt gesteuert… tut weh was die Programmierbarkeit für Anfänger
> angeht und leider ist es kein XMega mit Events
Informier dich mal, was ICP ist. Wenn man sich nicht ungeschickt 
anstellt, langweilt sich der Controller bei der Drehzahlmessung.

> - Timer0 als Counter nutzen… auch das ist nicht so super, aber schonmal
> ne Ecke besser
von wegen...

Wie sieht denn das Analog-Frontend zum Abgreifen der Drehzahl aus? Das 
ist die wirkliche Baustelle.

von DooMMasteR (Gast)


Lesenswert?

> Bisher in Laborumgebung...
stepp by stepp halt

> I2C ist nicht weniger störanfällig.
> Es hat seinen Grund, dass in KFZ-Umgebung differentielle Bussysteme zum
> Einsatz kommen.
I2C kann dann aber direkt auf dem Board stattfinden… das ist nicht all 
zu schmerzhaft
Ich wollte aufrgund der Störproblematik auf externe Buse vorerst 
vollends verzichten.
Im automotive Bereich vertraut man ja auch bis heute auf gute alte 
Analogsensoren und wandelt quasi erst im SG. LIN oder CAN wären für die 
Anwendung wohl overkill…

>> -LCD für die Anzeigen
> Aber doch bitte kein so hässliches steinaltes wie im Blockschaltbild
> angedeutet.
Bisher schon… aber ich bin für schönere Optionen immer offen, wichtig 
ist nur, dass es unter üblen Bedingungen ableßbar bleibt.


> Integriert der IC denn auch wirklich analog und double-buffered? Sonst
> ist mit Ladezustand Essig... da kannst du genausogut die Spannung allein
> messen.
Den LTC4151 sehe ich eher als Option an, weil wir ihn da haben, aber 
sonst nicht gebrauchen könne, einfacher Spannungsteiler mit etwas surge 
protection am ADC sollte es sonst sicher auch tun… da hast du recht, 
geht ja auch eher darum eine schwache Batterie erkennen zu können, denn 
Ladekontrolleuchte usw. haben viele Roller (meiner) nicht, da es ein 
Einspritzer ist, hat er aber auch keinen Kickstarter mehr.

> Informier dich mal, was ICP ist. Wenn man sich nicht ungeschickt
> anstellt, langweilt sich der Controller bei der Drehzahlmessung.
Ich dachte bei der Interrupt-Lösung wirklich nur daran, in der ISR dann 
das TimerRegister zu holen und den Timer wieder zu nullen.
Das sollte werder 1-wire noch I2C stören, was timings betrifft.
Die Frequenz kann man dann in Intervallen errechnen, leicht mitteln und 
kommt sich dann nicht in die Quere.


>> - Timer0 als Counter nutzen… auch das ist nicht so super, aber schonmal
>> ne Ecke besser
> von wegen...
hmm ok


> Wie sieht denn das Analog-Frontend zum Abgreifen der Drehzahl aus? Das
> ist die wirkliche Baustelle.
Das brauche ich nicht, es ist bereits ein Kurbelwellensensor vorhanden, 
der Digital 0/5V auswirft, den die MCU z.B. für Zündzeitpunkt usw. 
nutzt.

von Michael H. (michael_h45)


Lesenswert?

DooMMasteR schrieb:
>> Bisher in Laborumgebung...
> stepp by stepp halt
Und wie viele Steps dann zurück, wenns im Motorrad nicht funktioniert?
Nein, das gehört von Anfang an ins Konzept eingearbeitet.
Sonst kannst du z.B. von deinem 16bit gleich mal die hinteren 6 Bit 
wegwerfen.

> Ich wollte aufrgund der Störproblematik auf externe Buse vorerst
> vollends verzichten.
Dann hast du die Temperatursensoren mit den empfindlichen Analogleitung 
über die langen Kabel angeschlossen??

> Bisher schon… aber ich bin für schönere Optionen immer offen, wichtig
> ist nur, dass es unter üblen Bedingungen ableßbar bleibt.
Beitrag "[V] AM OLED 2,8inch Display C0280QGMA-T von CMEL"
=)

> geht ja auch eher darum eine schwache Batterie erkennen zu können, denn
> Ladekontrolleuchte usw. haben viele Roller (meiner) nicht, da es ein
> Einspritzer ist, hat er aber auch keinen Kickstarter mehr.
Achso, alles klar.

>> Informier dich mal, was ICP ist. Wenn man sich nicht ungeschickt
>> anstellt, langweilt sich der Controller bei der Drehzahlmessung.
> Ich dachte bei der Interrupt-Lösung wirklich nur daran, in der ISR dann
> das TimerRegister zu holen und den Timer wieder zu nullen.
Z.B. genau das macht ICP.

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

Michael H. schrieb:
> DooMMasteR schrieb:
>>> Bisher in Laborumgebung...
>> stepp by stepp halt
> Und wie viele Steps dann zurück, wenns im Motorrad nicht funktioniert?
> Nein, das gehört von Anfang an ins Konzept eingearbeitet.
> Sonst kannst du z.B. von deinem 16bit gleich mal die hinteren 6 Bit
> wegwerfen.
Ja das Board sollte schon ordentlich entstört sein. (aber hey… bleiben 
ja in deinem Szenario noch 10bit übrig :P)

>> Ich wollte aufrgund der Störproblematik auf externe Buse vorerst
>> vollends verzichten.
> Dann hast du die Temperatursensoren mit den empfindlichen Analogleitung
> über die langen Kabel angeschlossen??
Ja so richtig super toll finde ich die Lösung auch noch nicht… aber 
bisher habe ich nichts besseres gefunden, werde die TMP36 leicht 
belasten und recht kräftig puffern, außerdem hängen vom ADC auch noch 
Spulchen, aber viel mehr hatte ich bisher nicht zum Störschutz vor, das 
16bit am Ende overkill sind, ist mir klar… aber man nimmt, was man hat.
Aber im automotive Bereich sind solche lösungen ja scheinbar auch nicht 
unüblich… zumindes in Golfs usw. findet man viele solcher 0-2/0-5V 
Sensoren… die nichteinmal über geschirmte Kabel angebunden sind.

>> Bisher schon… aber ich bin für schönere Optionen immer offen, wichtig
>> ist nur, dass es unter üblen Bedingungen ableßbar bleibt.
> Beitrag "[V] AM OLED 2,8inch Display C0280QGMA-T von CMEL"
> =)
Das klingt schonmal nicht schlecht, mal sehen ob es da in der Richtung 
etwas gibt, für das es zumindest schon einfache Libs gibt… ansonsten 
selbst was Bauen, schaden kann das Notfalls auch nicht.

>>> Informier dich mal, was ICP ist. Wenn man sich nicht ungeschickt
>>> anstellt, langweilt sich der Controller bei der Drehzahlmessung.
>> Ich dachte bei der Interrupt-Lösung wirklich nur daran, in der ISR dann
>> das TimerRegister zu holen und den Timer wieder zu nullen.
> Z.B. genau das macht ICP.
Ich denke, dass es dabei auch bleiben wird…

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Tachometer == Drehzahlmesser.

Für die Geschwindigkeitsanzeige dann irgendwo noch einen Geber,
softwaredeitig ist das identisch (bei der Geschwindigkeit geht halt
noch der Gang bzw die Übersetzung mit ein).

Sollte irgendwo noch ein Farbdisplay in rund und ca 72 mm auftauchen
bin ich dabei ...

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

ahh
Ich wollte nicht, dass es zu missverständnissen kommt, aber ja ich meine 
einen Drehzahlmesser… kenne ihn halt aus dem Englischen eher als 
Tachometer.

Farbdisplay in Rund o.O was wird haarig :P

besonders wenn man da was hübsches drauf haben will, ist man mit dem AVR 
recht schnell am Limit, da müsste dann wohl eher etwas kräftigeres 
daher.

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

aus Platz und Kostengründen bei der Integration wird es nun ein andere 
Dispay
128x64Pixel, also immernoch sehr klein und es bleibt auch Monochrom: 
http://www.ebay.de/itm/ART-New-LCD-128x64-MN-with-LED-b-l-W-KK-ST7565R-3-5V-ART128064MN37-DIW-R-/390497658772?pt=LH_DefaultDomain_212&hash=item5aeb796794#ht_797wt_956
das ist zwar agneblich 3-5V aber ich denke der ST7565R will dennoch ne 
Pegelwandlung auf 3,3V… hab sie auf jedenfall erstmal per 74HC4050 
eingeplant.

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

Joachim Drechsel schrieb:
> Tachometer == Drehzahlmesser.
>
> Für die Geschwindigkeitsanzeige dann irgendwo noch einen Geber,
> softwaredeitig ist das identisch (bei der Geschwindigkeit geht halt
> noch der Gang bzw die Übersetzung mit ein).
>
> Sollte irgendwo noch ein Farbdisplay in rund und ca 72 mm auftauchen
> bin ich dabei ...

Das wird sicher eher schwer, von OLEDs habe ich mich ebenfalls 
verabschieded, da sie im Anwendungsfall ggf. sehr hohen und niedrigen 
Temperaturen und direkter dauerhafter Sonneneinstrahlung ausgesetzt 
würden, das geht leider nicht lange gut.

Runde LCDs wiederum sind wirklich rar und teuer :P

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Steffen A. schrieb:
> Runde LCDs wiederum sind wirklich rar und teuer :P

Tja ... nur, wo sind sie teuer ? ;)

Bis jetzt habe ich noch nichts gefunden, nicht mal hier im Forum.

von MaWin (Gast)


Lesenswert?


von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

in 72mm wird schwer… die sind alle deutlich kleiner
http://www.alibaba.com/product-gs/590517313/1_5_inch_round_TFT_LCD.html
1.5" ist ja doch eher winzig :P

das LC240240R schonmal in 2.3" also 58mm, noch immer weit von 2.9" oder 
2.85" entfernt.
http://www.review-displays.co.uk/acatalog/PO0230X1.html

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Danke ! Echte Lichtblicke ;)

Es sollte halt in ein Standard-Tachogehäuse (72 bzw 80 mm)
hineinpassen. Bei den meisten ist die LP hinter dem Display
erheblich größer ...

von Thomas S. (tosa)


Lesenswert?

Hi

ich suche auch nach einem runden LCD passend fuer Tachogehaeuse.
Wenn ihr eine Quelle fuer so ein Teil findet waere ich ueber eine Info 
dankbar. Ich wuerde mich auch gerne an einer Sammelbestellung 
beteiligen.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Thomas S. schrieb:
> ich suche auch nach einem runden LCD passend fuer Tachogehaeuse.
> Wenn ihr eine Quelle fuer so ein Teil findet waere ich ueber eine Info
> dankbar. Ich wuerde mich auch gerne an einer Sammelbestellung
> beteiligen.

Es finden sich im Web welche. Sogar "in Farbe" und so halbwegs für
die doch etwas ruppigen Umweltbedingungen am Motorrad. Das Display
selbst paßt auch, nur ist es fest auf einer LP montiert (Ansteuerung).
Den Riesenflatschen bekomme ich nicht mal in die Lampe.

Neben den Temperaturen muß das halt auch UV-Strahlung aushalten.
Der Ablesewinkel, na ja ... man kann nicht alles haben. Bei Sonne
sollte es auch noch ablesbar sein.

Klar ginge das mit 7-Segment-Anzeigen. Sieht halt nicht so toll aus.
Mit einem Grafikdisplay sähe das einfach schicker aus.

von Thomas S. (tosa)


Lesenswert?

>>Es finden sich im Web welche. Sogar "in Farbe" und so halbwegs für
die doch etwas ruppigen Umweltbedingungen am Motorrad. Das Display
selbst paßt auch, nur ist es fest auf einer LP montiert (Ansteuerung).
Den Riesenflatschen bekomme ich nicht mal in die Lampe.<<

Genau das ist auch mein Problem. Deshalb meine Bitte falls jemand was 
passendes findet mir eine Info zu geben :-)

>>
Klar ginge das mit 7-Segment-Anzeigen. Sieht halt nicht so toll aus.
Mit einem Grafikdisplay sähe das einfach schicker aus.<<

So mache ich es auch im Moment. Es sieht auch nicht schlecht aus, aber 
ich moechte halt noch ein paar andere Daten anzeigen und das waere mit 
einem LCD besser machbar als mit einer oder zwei Ziffern.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

http://www.farnell.com/datasheets/1640459.pdf wäre etwas brauchbares.
Leider nicht in rostfrei.

Please note that the recommended storage temperature is 15°C to 40°C. 
The recommended relative storage humidity is below
70%. The optimal operating temperature range is between 15°C and 25°C.

spricht auch nicht gerade für eine Verwendung im Mopped.
Der Preis auch nicht gerade ...

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

deshalb bin ich bei dem 128x64 Pixel monochom LCD angekommen… ist nicht 
so hübsch… aber sollte laut specs alle noch so üblen Bedingungen 
überleben.
Betrieb -20°C-70°C, Lagerung -40°C-85°C

Das ist nicht optimal, aber schon nicht schlecht, denke schon, dass das 
Display überleben wird.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Link ?

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

fast alle displays mit ST7567 scheinen so ausgelegt zu sein
http://www.good-display.com/products_detail/&productId=61579caa-edec-4b3b-ba2b-7f2483b1a7f3&comp_stats=comp-FrontProducts_list01-00454534544335.html

meins lag hier noch im Lager

http://www.crystalfontz.com/product/CFAG12864GSTITY sowas gibts auch… 
mit CFA controller

eines hab ich auch in OLED gefunden gehabt 
http://www.cooking-hacks.com/index.php/shop/accessories/oled-frame-128x64.html
Datenblatt Controller: 
http://garden.seeedstudio.com/images/4/46/SSD1308_1.0.pdf
Datenblatt OLED: 
http://garden.seeedstudio.com/images/c/c4/LY190-128064.pdf
 aber recht teuer… und was transreflexives ist mir doch lieber.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

With ITO glass heater, the lowest operatiing temperature is -35°C

Mit Heizlüfter ???

Im Datenblatt steht auch, Wasser löst den Kram auf. (= aufwendiges
Gehäuse).

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

wenn ich das recht verstehe ist das Display versiegelt… also das Modul 
was man kaufen kann, fast alle OLEDs mögen keine Luft/Wasser/Wärme/Kälte

ITO glass heater ist vermutlich ne beheizte Scheibe, wer weiß :P

Am ende scheinen LCDs wohl eher brauchbar, wobei dort wohl eher die 
(weißen) LEDs problematisch sind, die bei solch niedrigen Temperaturen 
eher murgs machen, meint zumindest nen Kollege.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Na ja, Versuch macht kluch ...

Vielleicht sollte ich doch erstmal mit 7-Segment-Anzeigen anfangen.
Irgendwo habe ich noch welche herumfliegen.

Spanndend wäre auch wie sich so ein Display an einer Guzzi hält,
die hat bis jetzt alles ab- oder kaputtgeschüttelt.

von Thomas S. (tosa)


Lesenswert?

@Joachim:
Guzzi? Ich habe mein Gebastel an einer Le Mans V.
Und hat nun schon mal 1 Saison gehalten :-)

Ich habe ein altes VDO-Gehaeuse genommen, entkernt und die 
7-Segmentanzeige dort eingebaut. Mit ner Menge Moosgummi drumrum hat's 
gehalten!
Den Mikrocontroller und den Rest habe ich unter der Sitzbank in einem 
spritzwassergeschuetzten Gehaeuse war bislang auch kein Problem.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Meine ist eine SP1000 als Gespann. Den gleichen Beiwagen habe
ich an der Dnepr. An der Guzzi brüllt und rappelt der in allen
Tonlagen ...

Tachogehäuse habe ich noch. Innereien raus und die Anzeige auf
eine Kunstoffplatte aufgebaut da einsetzen dürfte auch kein Problem
sein. Ich habe nur nichts um das Gehäuse dann wieder zuzubördeln
(vielleicht mal bei Kienzle oder VDO-Dienst fragen ?).

von Thomas S. (tosa)


Lesenswert?

Sp1000? Schick! Ein echtes Eisenschwein :-)

>>
Tachogehäuse habe ich noch. Innereien raus und die Anzeige auf
eine Kunstoffplatte aufgebaut da einsetzen dürfte auch kein Problem
sein. Ich habe nur nichts um das Gehäuse dann wieder zuzubördeln
<<

Ich habe meinen Gehaeusedeckel nur mit Silikondichtmasse eingeschmiert 
und wieder aufgedrueckt. Wie gesagt, hat gehalten.
Allerdings habe ich das Gehaeuse auf dem Plastikteil unter der 
Frontscheibe verbaut. Das ganze Ding vibriert schon so das es als 
Stossdaempfer fuer die Instrumente dient :-)
Dort habe ich auch ein Oelthermoeter genau so befestigt. Haelt seit 20 
Jahren ohne das etwas abvibriert ist.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

2 Stoppmutter kontern, schweißpunkt drauf = hält. :-)

So ähnlich habe ich das auch vor. Idee ist, einen Attiny für die
Anzeigen zu verwenden, mit ein Paar Schiebregistern die LEDs zu
bedienen und das ganze seriell anzusteuern.

De eigentlich Rechner kommt irgendwo unter den Sitz, da ist noch
genug Platz. Wenn's das Elefantentreffen überlebt taugt es was ...

Tachogeber sitzt am Getriebeausgang, Drehzahl hole ich über die
Schse-Zündung (da ist ein Ausgang vorhanden), Öltemperatur mal
sehen. In der Ölwanne ist genug Platz. Ich denke, gelbe Anzeigen.
Irgendsowie in etwa.

Nächste Eskaltationsstufe wäre dann eine Kamera und Live-Übertragung
per Webcam "A3 heute mittag auf der linken Spur" :)

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

hmm um niedrige Temperaturen mache ich mir eher wenig Gedanken… viel 
schlimmer sind die überheißen Sommertage, wenn die Sonne voll auf die 
Verkleidung ballert.

Bei mir landet die ganze Technik vorne im Roller, da sind auch Batterie 
und ein paar andere Elektronik sachen… nur ECU und die ganze sensorik 
sind unter der Bank.

Das muss ich mir eh ersteinmal ansehen, bis auf den 
Hall-Kurbelwellengeben habe ich noch nichts gefunden (der geht auch nach 
vorne, kp warum).
Und sonst hat sich wohl noch niemand für die ECU usw. interessiert… kp 
was die alles auffängt und ob die gar nen externen OBD-Bus hat.

vorhanden zu sein scheinen:
Lambdasonde
Drosselklappenstellungspoti
Drehzahlgeber
Drosselklappenservo (Versatzgetriebe) es gibt also noch nen Zug
Zündspulpuls
Einspritzpuls (PWM)

zumindest davon ausgehend, dass die Honda Moppel technisch ähnlich sind.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Wieso Roller ? Ich dachte, 'ne Lehmann ...

Für so ein fahrendes Scheißhäuserl lohnt der Aufwand nicht.

von Thomas S. (tosa)


Lesenswert?

@Steffen
die lemans ist meine :-)

@Joachim
ich habe das "Problem" mit der Geschwindigkeitserfassung ueber einen 10 
Hz GPS-Modul realisiert das ich von einem anderen Projekt uebrig hatte.
Ist eigentlich ganz einfach ueber TTL anzubinden.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

GPS schluckt der Graukittel nicht. Zm Kalibirieren ok. Ich weiß,
er muß es ja nicht wissen ...

von Thomas S. (tosa)


Lesenswert?

Klar. Sorry, hab ich nicht dran gedacht.
Ich verwende das GPS-Signal auch nicht fuer den Tacho sondern um aus 
Drehzahl und Geschwindigkeit den eingelegten Gang zu errechnen.
Was sagt der Tuev dazu wenn Du im Umkehrschluss aus dem Gang und der 
Drehzahl die Geschwindigkeit errechnest? Obwohl ich keine wirklich 
zuverlaessige Methode kenne den eingelegten Gang zu erkennen. Mir fallen 
nur Reedkontakte ein und die sind nicht wirklich zuverlaessig.

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

naja… das kann man so oder so sehen :P aber war nicht billig und keine 
öltemp ist bei etwas luftgekühltem etwas doof (es gibt ja netmal ne 
Warnlampe).

außerdem macht es ja auch Spaß :)

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

Sooo
2 Tage vergangen und schwupps schon läuft etwas mehr:
http://farm9.staticflickr.com/8487/8242239409_f0e7eb9fe1_o.jpg
Das ganze ist erstmal nur flink dahingebaut… aber es geht schonmal quasi 
so wie ich mir das vorstelle
1
void loop(){
2
  u8g.firstPage();
3
  sensors.requestTemperatures();
4
  outsideTemp = sensors.getTempCByIndex(0);
5
  oTempSS = String(dtostrf(outsideTemp,5,1,oTempS));
6
  oTempSS = oTempSS + "\xb0";
7
  oTempSS = oTempSS + "C";
8
  oTempSS.toCharArray(oTempS,8);
9
  do {
10
    draw();
11
  } 
12
  while( u8g.nextPage() );
13
}
14
15
void draw(void) {
16
  u8g.drawLine(0,49,127,49);
17
  u8g.drawLine(0,50,127,50);
18
  u8g.drawLine(63,51,63,63);
19
  u8g.drawLine(64,51,64,63);
20
  u8g.drawBitmapP( 5, 53, 2, 10, sym_oil);
21
  u8g.drawBitmapP( 72, 53, 1, 10, sym_temp);
22
  // graphic commands to redraw the complete screen should be placed here  
23
  u8g.drawStr( 24, 63, " 75""\xb0""C");
24
  u8g.drawStr( 79, 63, oTempS);
25
}

und zwar wirklich nur flink dahingeschraubt :P aber ich wollte 
ersteinmal sehen wie es um die Nutzbarkeit des Displays steht…
Auf Fotos sieht es zwar nicht sehr gut aus, aber gerade bei Tageslicht 
ist es exzellent ablesbar…
vorallem das mit dem floattostr muss ich wohl anders machen :P
http://www.youtube.com/watch?v=O_QaI3J5nJA

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

inzwischen etwas hübscher gemacht…
1
void loop(){
2
  if (count == 0){
3
    count = 50;
4
    sensors.requestTemperatures();
5
    dtostrf(sensors.getTempCByIndex(0),5,1,oTempS);
6
  }
7
    count--;
8
9
  u8g.firstPage();
10
11
  do {
12
    draw();
13
  } while( u8g.nextPage() );
14
}
15
16
void draw(void) {
17
  u8g.drawLine(0,49,127,49);
18
  u8g.drawLine(0,50,127,50);
19
  u8g.drawLine(63,51,63,63);
20
  u8g.drawLine(64,51,64,63);
21
  u8g.drawBitmapP( 5, 53, 2, 10, sym_oil);
22
  u8g.drawBitmapP( 72, 53, 1, 10, sym_temp);
23
  u8g.drawStr(24, 63, " 75""\xb0""C");
24
  u8g.drawStr(80, 63, oTempS);
25
  u8g.drawStr(114, 63, "\xb0""C");
26
}

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

Soo schluss für heute/gestern

http://pastebin.com/7hZp2AyB

:) 9bit reichen aus, das sind dann 0,5°C Schritte in denen die 
Umgebungstemperatur erfasst wird, mehr braucht der Mensch nicht :)

Leider kostet die ganze 1wire sache runde 150ms… was die Framerate etwas 
ruckeln lässt, aber dass load leveling werde ich nicht vor ganz zum 
Schluss machen :P

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

die Entscheidung für die Strommessung ist nun gefallen, es wird wohl ein 
analogsensor von Allegro, ein ACS709, auch wenn ich lieber was Digitales 
gehabt hätte.
Die Variante kann -75 - 75A messen und das bei 120kHz Bandbreite, was 
garnicht n¨togi ist, aber hey…

von Ein Gast (Gast)


Lesenswert?

Michael H. schrieb:
> Informier dich mal, was ICP ist. Wenn man sich nicht ungeschickt
> anstellt, langweilt sich der Controller bei der Drehzahlmessung.

Wen meinen bitte?
http://de.wikipedia.org/wiki/ICP

Abkürzungen schön und gut, aber es ist nicht ohne Grund gute Praxis, sie 
bei der ersten Nennung einzuführen bzw. zu verlinken.

von Ein Gast (Gast)


Lesenswert?

Steffen A. schrieb:
> Leider kostet die ganze 1wire sache runde 150ms… was die Framerate etwas
> ruckeln lässt, aber dass load leveling werde ich nicht vor ganz zum
> Schluss machen :P

Dann hol doch die (langsamen) Messwerte asnchron zu deiner Anzeige und 
rechne in der Frame-Loop nur eine Tiefpassfilterung/Interpolation der 
Messdaten.
Floatingpoint für solche Anwendungen ist allerdings etwas fehl am Platz, 
weil der Dynamikbereich, den man durch FP-Rechnung gewinnt, überhaupt 
nicht erforderlich ist und die Library nur den Speicher zustopft.

von Michael H. (michael_h45)


Lesenswert?

Ein Gast schrieb:
> Wen meinen bitte?
nicht dich.

wenns der rest der welt versteht und nur du nicht, ist das nicht mein 
problem, nicht deren problem, sondern dein problem.

> Abkürzungen schön und gut, aber es ist nicht ohne Grund gute Praxis, sie
> bei der ersten Nennung einzuführen bzw. zu verlinken.
soll ich dir usb aussprechen? oder bzw? vllt vllt?

du hättest fragen können, wie n normaler mensch und jeder hätts dir 
gesagt.
aber komm mir doch nicht so klugscheißerisch, du schnösel.

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

und da mein Display mir mit >2,5" wie ich es mir schon dachte, viel zu 
groß ist, habe ich nun ein weiteres bestellt…
http://www.ebay.de/itm/221044217772?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649#ht_3026wt_956
das ist deutlich kleiner, nutzt aber den gleichen Controller (wobei 
alles was von U8GLIB supported wird, kein Aufwand gewesen wäre.
Stromsensor usw. sind inzwischen da… das heißt ich kann demnächst etwas 
mit burst/surge hardening usw. des Ganze anfangen.

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

soo
ich hätte noch ein zwei fragen zum verhalten von ICP…

1. wird auch ein neuer Input gecaptured wenn das ICF1 bit noch gesetzt 
ist? das würde etwas weh tun, da ich einige andere Sachen auch Interrupt 
gesteuert mache und dann ggf. die differenz aus 2 ICP events in den 
Registern stehen würde

2. ist meine grundidee falsch
1
init{
2
   prescaler von Timer1 auf 64 setzen; // damit der Timer auch im langsamsten intervall kein OVF hat
3
}
4
5
loop{
6
   anderes zeug machen;
7
   int0 rising aktivieren;
8
   weitermachen;
9
}
10
11
int0_rising{
12
   Timer1 reset;
13
   ICPint aktivieren;
14
}
15
16
ICPint{
17
   ICPint deaktivieren;
18
   TImer1 auslesen;
19
}

von Karl H. (kbuchegg)


Lesenswert?

Steffen A. schrieb:
> soo
> ich hätte noch ein zwei fragen zum verhalten von ICP…
>
> 1. wird auch ein neuer Input gecaptured wenn das ICF1 bit noch gesetzt
> ist? das würde etwas weh tun, da ich einige andere Sachen auch Interrupt
> gesteuert mache und dann ggf. die differenz aus 2 ICP events in den
> Registern stehen würde

?
Was um alles in der Welt machst du in den anderen Interrupts, dass das 
so lange dauert, dass dir eine Kurbelwelle in dieser Zwischenzeit eine 
komplette Umdrehung macht?

> 2. ist meine grundidee falsch

Wenn du ständig mit "Timer starten", "Timer stoppen", "Timer 
zurücksetzen" rummachst, dann ist das meistens Unsinn.

Einen Timer startet man beim Programmstart einmalig und dann läuft der 
durch, bis du den Strom abdrehst. Genau dazu hat man ja den Input 
Capture, damit man sich von der Notwendigkeit befreit, genau zum 
richtigen Taktzyklus den Timerwert auslesen zu müssen. Wenn der µC 
momentan gerade in einer anderen ISR arbeitet, dann ist das mit ICP ja 
kein Problem. Der Timer speicher tselbsttätig den Wert zur Flanke 
zwischen und bei nächster Gelegenheit holt man sich den Wert. Das 
'nächste Gelegenheit' darf natürlich nicht eine halbe Stunde später 
sein, aber auf ein paar µs auf oder ab kommt es bei einem 
Verbrennungsmotor, der bei jeder Kurbelwellenumdrehung einen Puls 
erzeugt nun wirklich nicht an.

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

1
init{
2
   prescaler von Timer1 auf 64 setzen;
3
   ICP aktivieren;
4
}
5
6
loop{
7
   anderes zeug machen;
8
   aus Intervallzeit die Drehzahl berechnen;
9
}
10
11
ICPint{
12
   Timer1 auslesen;
13
   Differenz zu vorherigem Wert berechnen; /dabei TOV1 beachten und zurücksetzten
14
}

wäre dann wohl schon ausreichend…

von Karl H. (kbuchegg)


Lesenswert?

Ran an die Bulletten und ausprobiert.

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

Soo ich habe es nun so gemacht, dass ich die überlaufenen Werte einfach 
verwerfe, ich werde die Refreshrate eh auf 1Hz begrenzen, vllt 1,2Hz…
1
ISR(TIMER1_CAPT_vect)
2
{
3
  //read ICR1
4
  timercapture = ICR1;
5
  //when overflown discard this intervall
6
  if ((TIFR1 & (1<<TOV1)))
7
  {
8
    TIFR1 = (1<<TOV1);
9
    lastcapture = timercapture;
10
    reti();
11
  }
12
  //calculate the last period
13
  timediff = timercapture - lastcapture;
14
}

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

so ganz geheuer sind mir die ISR Macros noch nicht :P
habs noch etwas manipuliert:
1
unsigned int timercapture;
2
unsigned int lastcapture;
3
unsigned int timediff;
4
5
void setup(void)  
6
{
7
  //tachometerinput
8
  pinMode(2,INPUT);
9
  //Timer1 normal mode
10
  TCCR1A = 0;
11
  //Timer1 prescaler /64 + input capture noise canceler on, ICP trigger on rising edge
12
  TCCR1B = (1<< CS11) + (1<< CS10) + (1<< ICNC1) + (1<< ICES1);
13
  //activate ICP
14
  TIMSK1 = (1<<ICIE1);
15
  //clear ICPint flag
16
  TIFR1 = (1<<ICIE1);
17
  Serial.begin(9600);
18
}
19
20
void loop(void)
21
{
22
  Serial.print(convertToRPM(timediff), DEC);
23
}
24
25
ISR(TIMER1_CAPT_vect)
26
{
27
  //read ICR1
28
  timercapture = ICR1;
29
  //when overflown discard this intervall
30
  if ((TIFR1 & (1<<TOV1)))
31
  {
32
    TIFR1 = (1<<TOV1);
33
    lastcapture = timercapture;
34
  } else {
35
    //calculate the last period
36
    timediff = timercapture - lastcapture;
37
  }
38
}

von Karl H. (kbuchegg)


Lesenswert?

brauchst du nicht so kompliziert machen.
Das coole an unsigned Arithmetik ist, dass du dich nicht um Overflows 
kümmern musst.
1
ISR(TIMER1_CAPT_vect)
2
{
3
  timercapture = ICR1;
4
5
  timediff = timercapture - lastcapture;
6
  lastcapture = timerCapture;
7
}

in timediff hast du immer den zuletzt gemessenen Differenzwert. Und der 
stimmt auch dann, wenn die Messung 'über den unsigned int' drber geht 
und der Timer wieder bei 0 angefangen hat.

unsigned int mässig gerechnet ergibt

  1 - 65534

nämlich 3. Und genau das ist die Anzahl der Schritte zwischen den 
Zählerwerten von 65534 bis zur 1

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

ohh ja stimmst

ok, aber um den überlauf muss ich mich dennoch kümmern, da ich sonst 
ggf. komische messwerte bekomme :P, aber das ist nicht so schlimm, ich 
kann einfach gegen alles was <500rpm ist filtern, das geht ja auch 
extern ohne weiteres

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

sooo
es geht weiter… ICP funktioniert nun :) und alles andere abgesehen von 
der Bordspannung auch
als Current Sensor kommt nun ein Allegro AC709 zum Einsatz, der sich bei 
meinen Versuchen als beste und stabilste Lösung herauskristalisiert hat.
5minuten bei 35A waren kein problem und 1sek bei 100A hat er auch 
überlebt zur sicherheit bekommt er aber noch einen kleinen metallenen 
Heatspreader verpasst.

Einzig U8Glib macht mir noch etwas zu schaffen, da all die Fonts total 
abartig aussehen… da muss ich wohl noch etwas alternatives machen.

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Lesenswert?

es geht nun so langsam ans PCB -.- erstmal habe ich mich voesichtig um 
die Spannungsversorgung gekümmert, wobei ich nicht weiß, ob die 250µF 
Elko nicht etwas übertrieben sind

http://www.flickr.com/photos/doommeer/8289738208/in/photostream

das 74HC4050 wird sicher noch anders beschaltet… aber das hat Zeit :)

von DooMMasteR (Firma: Stratum0 e.V.) (doommaster)


Angehängte Dateien:

Lesenswert?

ach ja und das schaltbild bisher

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.