Aktuelle Zeit: Fr 22. Sep 2017, 21:38

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 207 Beiträge ]  Gehe zu Seite 1, 2, 3, 4, 5 ... 21  Nächste
Autor Nachricht
 Betreff des Beitrags: Drehzahlanzeige mit Arduino
BeitragVerfasst: Di 12. Jul 2011, 13:40 
Offline
Administrator
Administrator
Benutzeravatar

Registriert: Fr 5. Nov 2010, 18:58
Beiträge: 4673
Wohnort: Altlandkreis Wasserburg
bedankte sich: 31 mal
Danke erhalten: 264 mal
Landesflagge: Germany
Hallo Leute,

angeregt durch die µC-Diskussion in Heli's Thread Drehzahlanzeige selbst gebaut! hab ich gestern Abend mal schnell wissen wollen, wieviel Aufwand das wirklich ist.

Das Ergebnis:
Dateianhang:
Drehzahlmesser.jpg
Drehzahlmesser.jpg [ 345.12 KiB | 24810-mal betrachtet ]

Der Code:
Code:
     1  #include <LiquidCrystal.h>                    // LCD Library einbinden

     2  LiquidCrystal mylcd(8, 9, 4, 5, 6, 7);        // Display Anschlußpins definieren

     3  const int LCDdimmer = 10;                     // LCD Beleuchtung via Pin 10
     4  const int Eingang = 2;                        // Pin 2 ist Eingang für Sensor


     5  void setup() {
     6    pinMode(Eingang, INPUT);                    // Eingangspin auf Eingang stellen
     7    digitalWrite(Eingang, HIGH);                // und Pullup-Widerstand einschalten
     8
     9    pinMode(LCDdimmer, OUTPUT);                 // Display-Dimmer-Pin auf Ausgang
    10    analogWrite(10, 200);                       // Helligkeit auf 200 (via PWM)
    11
    12    mylcd.begin(16, 2);                         // Display hat 2 Zeilen a 16 Zeichen

    13    mylcd.print("Drehzahlmesser");              // Überschrift ausgeben
    14
    15    attachInterrupt(0, readmicros, RISING );    // Interrupt 0 auf Routine readmillis setzen
    16                                                // reagiert auf steigende Flanken an Pin 2
    17  }

    18                                                // ein paar variablen definieren
    19  volatile unsigned long dauer=0;               // microsekunden seit dem letzten Interrupt
    20  volatile unsigned long last=0;                // Zählerwert beim letzten Interrup
    21  long drehzahl;                                // selbstredend
    22  char buf[17];                                 // Pufferstring für sprintf


    23  void loop() {                                 // Hauptprogramm
    24    drehzahl = 60000000 / dauer;                // Drehzahl ausrechnen und
    25    sprintf(buf, "RPM %4lu   ", drehzahl);      // als 4stellig formatierte Zahl in den Puffer schreiben
    26    mylcd.setCursor(0, 1);                      // cursor an den Anfang der 2. Zeile (fängt mit 0 an)
    27    mylcd.print(buf);                           // Puffer ausgeben
    28  }


    29  void readmicros() {                           // Interrupt-Routine
    30    detachInterrupt(0);                         // Interrupt ausschalten damit er uns nicht beißt
    31    unsigned long m = micros();                 // Microsekundenzähler auslesen
    32    unsigned long v = m - last;                 // Differenz zum letzten Durchlauf berechnen
    33    if (v > 5000) {                             // ignorieren wenn <= 5ms (Kontaktpreller)
    34      dauer = v;                                // Wert in dauer übernehmen
    35      last = m;                                 // und wieder den letzten Wert merken
    36    }
    37    attachInterrupt(0, readmicros, RISING );    // Interrupt wieder einschalten.
    38  }


Ich hab das Programm bewußt einfach gehalten und Dinge wie eine Meßwert-Glättung nicht eingebaut. Eine Meßwert-Glättung macht nochmal 5 Programmzeilen mehr und die Behandlung des Überlaufs des Microsekundenzählers (tritt nach ca. 70 Minuten auf) macht nochmal eine Zeile.

Nun möge sich jede(r) selber ein Bild machen, wie einfach oder schwierig es ist, sowas mit Arduino zu machen und ob er/sie sich das zutraut.

Gruß
- Karl

Nachtrag: das o.a. Programm hat noch einen weiteren Schönheitsfehler:
Nach dem Abschalten der Rotation zeigt es dauerhaft den letzten Meßwert größer Null an, aber nicht Null.
Falls Interesse besteht, kann ich eine Version einstellen, bei der alle angesprochenen Mankos beseitigt sind.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Drehzahlanzeige mit Arduino
BeitragVerfasst: Di 12. Jul 2011, 15:52 
Offline
Techniker
Techniker
Benutzeravatar

Registriert: Do 11. Nov 2010, 23:48
Beiträge: 441
Wohnort: Niederrhein
bedankte sich: 0 mal
Danke erhalten: 1 mal
Hallo Karl!

Nun fehlt aber nur noch die Realisierung ohne Arduino. Und genau da missfällt mir der Arduino.
Mit welchen µC ist das Programm lauffähig und ist das Programm auch als HEX vorhanden, um es vielleicht mit einem Mega8 oder ATiny2313 zu bewerkstelligen.
Wie müssen andere µC eingestellt werden, welche Fusebits müssen eventuell gesetzt werden?
Ist der Arduino auch mit kleinen Atiny (Atiny13, Atiny85,...)zu betreiben?

Das sind meiner Meinung alles Nachteile beim Arduino. Bei anderen Boards kann ich meinen µC frei wählen und mit eigenem Programmer beschreiben. Die eingeschränkte Flexibilität ist nicht überzeugend. Vielleicht zum spielen aber für spätere Schaltungen ist der Arduino zu umständlich.
Ich habe mir mal einen Bestellt und hoffe das er diese Woche noch eintrifft. Dann kann ich genaueres dazu sagen.

_________________
Gruß
M-o-n-o-t-o-n

Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen.
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Drehzahlanzeige mit Arduino
BeitragVerfasst: Di 12. Jul 2011, 17:23 
Offline
Administrator
Administrator
Benutzeravatar

Registriert: Fr 5. Nov 2010, 18:58
Beiträge: 4673
Wohnort: Altlandkreis Wasserburg
bedankte sich: 31 mal
Danke erhalten: 264 mal
Landesflagge: Germany
M-o-n-o-t-o-n hat geschrieben:
Nun fehlt aber nur noch die Realisierung ohne Arduino. Und genau da missfällt mir der Arduino.
  • Ist das Programm auch als HEX vorhanden?
  • Wie müssen andere µC eingestellt werden?
  • Welche Fusebits müssen eventuell gesetzt werden?
  • Ist der Arduino auch mit kleinen Atiny (Atiny13, Atiny85,...) zu betreiben?
Das sind meiner Meinung alles Nachteile beim Arduino.

Hallo M-o-n-o-t-o-n,

das sind alles Fragen, mit denen sich der Anfänger doch gar nicht beschäftigen möchte!
Was zur Hölle sind Fusebits?
Welchen Programmer soll ich verwenden?
Und welchen der -zig möglichen ATmega Chips wähle ich für mein Projekt?
Das sind alles Fragen, die einem Anfänger nur unnötig das Leben schwer machen.

Zu Gunsten der Einfachheit unterstützt das Arduino-Projekt nur folgende Chips:
  • ATmega8 (quasi ausgestorben)
  • ATmega168
  • ATmega328 (der meistverwendete (Duemilanove, UNO) )
  • ATmega1280
  • ATmega2560
Dafür muß sich der Anwender (Anfänger!) mit solchen Details wie Fusebits und Programmer nicht rumärgern.

Der Arduino wendet sich ganz gezielt an Nicht-Programmierer! Ich zitiere nochmal:
Zitat:
... insbesondere Künstlern, Designern, Hobbyisten und anderen Interessierten ...

Einen Programmer brauchts auch nicht - Der Arduino selbst ist der Programmer.
Und das alles für 25 Euronen (auf eBay ab ca. 12 EUR aus Polen oder China)

Ja, für manches Projekt ist ein Atmega328 Overkill, da hätte es ein ATtiny2313 auch getan. Wie z.B. für diesen Drehzahlmesser ...
Aber warum? Ein ATmega328 kostet ca. 3,50 EUR, der ATtiny2313 kostet ca. 1,50 EUR.

Für ein Einzelstück ist mir das vollkommen egal, daß das Ding 2 EUR teurer ist, wenn ich es dafür VIEL einfacher habe.
Das rechnet sich erst, wenn Du in großen Stückzahlen arbeiten willst.

Und wenn Du anspruchsvolle Projekte hast, dann wird ein ATtiny sowieso viel zu schnell zu klein. Und BASCOM auch.
In der Arduino-Umgebung kann ich fließend von Processing/Wiring in C und in Assembler übergehen.
Mit Arduino kannst Du prima wachsen, da wird so schnell kein Projekt zu groß ...

Und wenn Du dann mal an irgendwas stößt, was sich mit einem Arduino Mega (ATmega2560) nicht mehr machen läßt,
dann kennst Du Dich inzwischen so gut aus, daß Dich solche Kleinigkeiten wie Fusebits auch nicht mehr kümmern ...

Schau Dir einen Arduino erstmal an, bevor Du darüber meckerst.
Bau mal so einen Drehzahlmesser, programmiere mit BASCOM und zeige Ihn hier ...

Ich hab für die vollständige Realisierung ungefähr eine Stunde gebraucht - kannst Du da mithalten?

ICH kann programmieren. Mir machen Chip-Auswahl, Fusebits, Assembler, ISP-Programmer und Co. nichts aus.
Aber warum soll ich mir unnötig das Leben schwer machen?

Gruß
- Karl

Nachtrag: ich will hier jetzt gar nicht mehr weiter pro/contra Arduino diskutieren - dafür ist mir meine Zeit zu schade.
Ich wollte nur aufzeigen, wie einfach es sein kann. Wenn es sich jemand schwerer machen möchte - bitteschön!

Nachbauinteressenten finden im Anhang die verbesserte Programmversion. Angepasst werden muß nur die LiquidCrystal-Zeile an das jeweils verwendete Display.
Dort sind die zuvor genannten Schönheitsfehler beseitigt, eine dynamische Glättung der Werte und eine Drehzahlabhängige Rundung auf 5/10/50/100 U/min eingebaut.
Have fun.


Dateianhänge:
drehzahlmesser2a.txt [4.39 KiB]
1720-mal heruntergeladen
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Drehzahlanzeige mit Arduino
BeitragVerfasst: Di 12. Jul 2011, 18:43 
Offline
Techniker
Techniker

Registriert: Di 9. Nov 2010, 01:22
Beiträge: 363
bedankte sich: 0 mal
Danke erhalten: 4 mal
hallo,

die frage was denn fusebits/lockbits seien meinst du nicht etwa ernst, oder?

mfg,
---> Phil

_________________
Egal was du tust, vergiß dabei nicht:
Der Teufel schläft nicht...


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Drehzahlanzeige mit Arduino
BeitragVerfasst: Di 12. Jul 2011, 18:52 
Offline
Administrator
Administrator
Benutzeravatar

Registriert: Fr 5. Nov 2010, 18:58
Beiträge: 4673
Wohnort: Altlandkreis Wasserburg
bedankte sich: 31 mal
Danke erhalten: 264 mal
Landesflagge: Germany
phil hat geschrieben:
hallo,

die frage was denn fusebits/lockbits seien meinst du nicht etwa ernst, oder?

Hallo Phil,
ich glaube, Du hast den Post nicht komplett gelesen :-)

Das waren beispielhafte typische Anfänger-/Einsteigerfragen ...
Ich hab die ATmels auch schon in Assembler programmiert und mich sehr wohl um Fuses und Locks gekümmert.
Aber - ehrlich gesagt - schon eine ganze Weile nicht mehr, weils mit dem Arduino so schön einfach ist.
Und - wie bereits gesagt - warum soll ich mir mehr Arbeit machen als nötig?

Wenn ich mal wieder für irgendein Gimmick 100 µCs zum Verschenken brauche, dann werd ich das
sicher mit nem 'tiny machen und dann muß ich mich auch wieder um die Fusebits kümmern,
aber bis dahin ... ;-)

:trink2:
- Karl


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Drehzahlanzeige mit Arduino
BeitragVerfasst: Di 12. Jul 2011, 19:04 
Offline
Geselle
Geselle
Benutzeravatar

Registriert: Do 11. Nov 2010, 17:55
Beiträge: 245
bedankte sich: 2 mal
Danke erhalten: 6 mal
phil hat geschrieben:
hallo,

die frage was denn fusebits/lockbits seien meinst du nicht etwa ernst, oder?

mfg,
---> Phil



Wenn meine Kinder solche Fragen stellen, sag ich immer " Herr schmeiß Hirn vom Himmel "

_________________
Auch Zwerge haben mal klein angefangen :-)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Drehzahlanzeige mit Arduino
BeitragVerfasst: Di 12. Jul 2011, 20:44 
Offline
Techniker
Techniker

Registriert: Di 9. Nov 2010, 01:22
Beiträge: 363
bedankte sich: 0 mal
Danke erhalten: 4 mal
Hallo,

Ich meinte das eigentlich auch so, daß Karl ja offensichtlich ahnung von der materie haben dürfte, da kann ich mir nicht vorstellen, daß er dies nicht weiß.

Daher meine nachfrage.

Ich wollte eigentlich niemanden beleidigen, herabmachen oder sonstwas in der art.
Sorry, wenns wiedermal falsch rüberkam.
Werd mich wohl in zukunft aus diskussionen raushalten und nix mehr verfassen, wenn sich eh dauernd gleich irgendjemand angep....t fühlt.

Mfg,
---> Phil

_________________
Egal was du tust, vergiß dabei nicht:
Der Teufel schläft nicht...


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Drehzahlanzeige mit Arduino
BeitragVerfasst: Di 12. Jul 2011, 22:14 
Offline
Techniker
Techniker
Benutzeravatar

Registriert: Do 11. Nov 2010, 23:48
Beiträge: 441
Wohnort: Niederrhein
bedankte sich: 0 mal
Danke erhalten: 1 mal
Hallo!

Für mich ist das schon interessant zu wissen, ob ich damit tinys programmieren kann. Ich brauche keine 1000W Gerätschaft um eine LED zum Leuchten zu bringen. Mir reicht da auch weniger. Darum ging es mir.
Ich nutze am liebsten den Mega8 und noch lieber die kleinen Tinys. Wenn ich eine LED mit PWM steuere brauche ich keinen Mega256. Da reicht mir ein Tiny13.
Mich persönlich hätte z.B. interessiert, ob es für den Arduino vielleicht einen huckepack-Adapter gibt, womit man auch kleine µC beschreiben kann.
Wo hast gelesen das der Mega8 ausgestorben ist? Wäre mir neu!

Na ja, vielleicht ist es doch besser ein gesonderten Bereich für solche Anfängerfragen zu erstellen. Fusebits sind beim Messen nicht uninteressant. Lockbit lasse ich meine Finger von.
Ich weiß nicht warum Du so gereizt bist, wenn ich ein paar Dummy-Fragen stelle. Ist doch was ganz normales oder passt es Dir einfach nicht in den Kram, dass jemand eine andere Meinung vertritt, als Du? <- aber das bitte in einem gesonderten Thread.

_________________
Gruß
M-o-n-o-t-o-n

Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen.
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Drehzahlanzeige mit Arduino
BeitragVerfasst: Di 12. Jul 2011, 22:49 
Offline
Administrator
Administrator
Benutzeravatar

Registriert: Fr 5. Nov 2010, 18:58
Beiträge: 4673
Wohnort: Altlandkreis Wasserburg
bedankte sich: 31 mal
Danke erhalten: 264 mal
Landesflagge: Germany
M-o-n-o-t-o-n hat geschrieben:
Mich persönlich hätte z.B. interessiert, ob es für den Arduino vielleicht einen huckepack-Adapter gibt, womit man auch kleine µC beschreiben kann.

Sei mir nicht böse (nicht falsch verstehen!) aber Du hast das Arduino-Projekt nicht verstanden!
Du würdest es besser verstehen, wenn Du alles, was Du über ATmel und uC weißt, einfach mal vergisst.

Arduino ist kein Programmiergerät.
Arduino ist kein uC.
Arduino ist keine Entwicklungsumgebung.
Arduino ist keine Sprache.

Arduino ist all das zusammen - und noch mehr. Das ist das Geniale daran.
Du kaufst einen Arduino und hast alles onBoard, inkl. Programmer.
Du brauchst keinerlei zusätzliche Hardware - nur ein USB-Kabel.
Und natürlich die Zusatzhardware, die Du evtl. ansteuern möchtest (z.B. LCD-Display)

Mein Drehzahlmesser-Projekt z.B. benutzt einen Arduino Duemilanove und ein LCD-Shield.
Letzteres wird einfach aufgesteckt. Ich habe keinerlei zusätzliche Hardware gebraucht und
den Lötkolben hab ich auch nicht angefasst. Einfach nur 'ne Stunde programmiert ...

D.h. zu Gunsten von super einfacher Handhabung gibt es ein paar Einschränkungen.
Mit denen muss man leben. Oder man muss es lassen.
Ziel ist es, möglichst *einfach* das gestellte Problem zu lösen.

Man *kann* der Arduino-Umgebung auch andere uC anfüttern, das ist aber nicht ganz einfach.
schau mal hier: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1189970096/6
Aber das erfordert schon deutlich weiterentwickelte Kenntnisse ...
... besonders wenn es sich um einen 'tiny ohne RAM handelt.

Damit werd ich mich mal beschäftigen, wenn ich mal wieder unbedingt mit 'nem 'tiny arbeiten will.
Aber vermutlich würde ich den 'tiny dann doch direkt in Assembler programmieren ...

- Karl


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Heli's MyAVR-Projekt
BeitragVerfasst: Mi 13. Jul 2011, 08:48 
Offline
Administrator
Administrator
Benutzeravatar

Registriert: Fr 5. Nov 2010, 18:58
Beiträge: 4673
Wohnort: Altlandkreis Wasserburg
bedankte sich: 31 mal
Danke erhalten: 264 mal
Landesflagge: Germany
Heli hat geschrieben:
Ich habe gestern das MyAVR Board bekommen!!
Und hab gleich mal ein wenig damit rumgespielt!

Servus Heli,

hast Dich also entschieden! Herzlichen Glückwunsch für die ersten Gehversuche mit AVR!
Mit Verlaub: sollte das nicht in einen eigenen Thread? Da gibt's doch bestimmt noch viel zu erzählen.

Heli hat geschrieben:
Aber ich werd mir jetzt auch noch das Arduino Board zulegen, ist ja keine große Investition!
Welches LCD solle ich mir zulegen?

Am meisten verbreitet und hervorragend unterstützt sind alle Displays auf Basis des Hitachi HD44780
(oder kompatiblen) Controllerchips. Dafür gibt es sowohl für Arduino als auch für BASCOM passende
Libraries, so dass man sich nicht mit der Programmierung der Display-Schnittstelle rumärgern muß.
Schau mal hier, die gehen alle: http://shop.ebay.de/i.html?_nkw=HD44780
Welches Schweinderl hätten's denn gern? Grün? Blau? Weiß? Orange? 16x2? 20x4?

Wenn Du mit einem Arduino arbeiten willst, gibt es auch solche LCD Display/Keypad Shields, die
haben gleich noch ein paar Taster mit drauf und man brauchts einfach nur aufstecken - nix löten:
Dateianhang:
LCDShield.jpg
LCDShield.jpg [ 40.37 KiB | 23411-mal betrachtet ]

Das ist das gleiche, was auch ich verwendet hab - gibt's z.B. hier: eBay #270705511479

Sowas ähnliches gibt's - ohne Taster - auch für myAVR: klick. Mit Sicherheit gibt's noch tausend andere Zusatzmodule.
(Taster sind beim myAVR bereits auf der Hauptplatine, was allerdings für einen Gehäuseeinbau zusammen mit Display eher hinderlich ist.)

Du kannst aber auch jedes beliebige andere Display verwenden. Grafikdisplays aus Mobiltelefonen sind sehr beliebt.
Das erfordert dann evtl. ein klein bißchen Zusatzelektronik und meistens eine Menge zusätzliche Programmierung.
Mit ein bißchen Glück hat aber schon ein Anderer die Arbeit gemacht und man findet was passendes im Netz.

Viel Erfolg! :trink2:

Gruß
- Karl


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 207 Beiträge ]  Gehe zu Seite 1, 2, 3, 4, 5 ... 21  Nächste

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Impressum

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Deutsche Übersetzung durch phpBB.de