Hi, ich wollte gerne wissen, ob es Arduinos gibt, die schon einen fertigen Zählapparat integriert haben. Ich habe eine Gabellichtschranke und will da etwas zählen, wie oft etwas durch die Gabellichtschranke durchging. Ist das schon fertig in den Aruinos mit drinnen oder muss das als separates Zählgerät mit zugekauft werden?
In gewisser Weise ist es mit drinnen. Aber die Funktion eines Arduinos entsteht erst aus der Programmierung. Du müsstest also ein Zählprogramm schreiben. MfG Chaos
J. T. schrieb: > In gewisser Weise ist es mit drinnen. Aber die Funktion eines Arduinos > entsteht erst aus der Programmierung. Du müsstest also ein Zählprogramm > schreiben. > > MfG Chaos Danke für die Info. Was ich nicht machen wollte, ist z.B. einen Digital-IN-Eingang immer abzufragen, sonst muss ich das Programm ja schnell laufen lassen - zumindest mindestens > 2 schneller als ein zu erwartender Flankendurchgang. Ich wollte gerne eine Zählapparatur haben, die man z.B. resetten kann und die dann immer weiter hochzählt, und immer, wenn ich abfrage, dann kommt der aktuelle Wert raus, der dann immer höher wird. Ist sowas schon dort integriert in einem Arduino?
Dafür muss natürlich ein zusätzliches Gerät gekauft werden. Gut geeignet sind Summenzähler wie diese hier https://www.hengstler.de/de/s_c100101/Zaehler/Summenzaehler/ Zusätzlich benötigst Du ein Kameramodul, um die Anzeige zu erfassen. Ich habe gute Erfahrungen mit diesem hier gemacht, das Arduni-kompatibel ist https://www.robotshop.com/de/de/arducam-mini-kamera-modul-platine-mit-2-mp-ov2640-fur-arduino.html Deine Arbeit beschränkt sich dann darauf, das Kamerabild in eine Dezimalzahl zu konvertieren (gibt's sicher auch schon als Bibliothek), und fertig ist das Arduni-Zählgerät!
Programmieranfänger schrieb: > Ist sowas schon dort integriert in einem Arduino? Ja. Wie schnell wird denn die Lichtschranke unterbrochen, dass ein Programm mit dem zählen nicht mehr hinterherkommt, mehr als 100000 x pro Sekunde ? Der Hardwarezähler schafft dann 10000000 x pro Sekunde.
Programmieranfänger schrieb: > Ich habe eine Gabellichtschranke > und will da etwas zählen, wie oft etwas durch die Gabellichtschranke > durchging. Programmieranfänger schrieb: > Was ich nicht machen wollte, ist z.B. einen Digital-IN-Eingang immer > abzufragen https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/
Beitrag #6340710 wurde von einem Moderator gelöscht.
Beitrag #6340761 wurde von einem Moderator gelöscht.
Du brauchst. Ein Arduino-Nano o.ä. = ca. 3 Euro Eine Gabellichtschranke = ca. 1 Euro Ein Display 2x16 Zeichen o.ä. mit I2C-Adapter = ca. 4-5 Euro 2- x Taster. = einige Cent/a Alle Preise China/Ebay-Preise Dann den Arduino so programmieren Eine Variable als Anzahl deklarieren. Wenn der Level High ist, am Pin wo die Lichtschranke dran ist, Anzahl = Anzahl + 1 und den Wert Anzahl am Display ausgeben. Was die Taster angeht. Taste 1 : Bei HIGH Anzahl = 0 , führt ein Reset durch Taste 2 : Den würde ich für eine Pause des zählen verwenden. Weitere Taster für besondere wünsche.
Programmieranfänger schrieb: > Was ich nicht machen wollte, ist z.B. einen Digital-IN-Eingang immer > abzufragen, sonst muss ich das Programm ja schnell laufen lassen - > zumindest mindestens > 2 schneller als ein zu erwartender > Flankendurchgang. Das ist Unsinn. Der Job einen Arduino ist es ja gerade Eingänge abzufragen, und Daten an Ausgänge zu senden. Klar kann man mit Interrupt arbeiten, das macht man = ich aber nur wenn ich Strom sparen will, oder das Ereignis wirklich das laufende Programm unterbrechen soll.
Deine Idee, dass man den Mikrocontroller zwischendurch resetten können soll ohne den Zählerstand zu verlieren, würde ich nochmal überdenken. Weil: Ein Reset setzt normalerweise alles zurück. Das Programm startet neu mit frischer Initialisierung. Das erwartet man von einem Reset. Nun hat der Mikrocontroller auch ein bisschen EEPROM, wo man Daten ablegen kann, die sogar ohne Stromversorgung erhalten bleiben sollen. Allerdings hat das EEPROM nur eine begrenzte Lebensdauer. Das Programm kann dies einfach ignorieren (dann geht das Gerät nach einer gewissen Zeit kaputt) oder mit einem ausgefuchsten Algorithmus ein Ding "für die Ewigkeit" schaffen. Aber: Was machst du, wenn die Daten in dem EEPROM durcheinander geraten? Das kommt durchaus vor. Störungen der Stromversorgung und starke elektromagnetische Felder können das auslösen. Dafür solltest du eine zweite Rücksetz-Taste vorsehen, mit der man das EEPROM ggf. löschen kann. Du kennst das sicher von andere elektronischen Geräten, zum Beispiel Internet Router. Manche Drucker habe so etwas ebenfalls. Früher hatten die Personal Computer auch einen BIOS-Reset Jumper.
Wenn Du nur die Anzahl zählen willst knnst Du die T0 bzw T1 Pins nehmen. Willst Du wissen, wie oft etwas pro Sekunde durch die Lichtschranke geht, nimmst Du den ICP pin. Für beides solltest Du leicht sketches finden, die Du nutzen kannst. Aber um ein bisschen Einarbeitung in die Arduino IDE und dessen Programmierung wirst Du nicht rumkommen.
Schlaumaier schrieb: > Ein Arduino-Nano o.ä. = ca. 3 Euro > Eine Gabellichtschranke = ca. 1 Euro > Ein Display 2x16 Zeichen o.ä. mit I2C-Adapter = ca. 4-5 Euro > 2- x Taster. = einige Cent/a einverstanden, aber das geht kaum ohne zusätzliche Verdrahtung Ich finde "Ein Display 2x16 Zeichen o.ä. mit I2C-Adapter" überteuert und bäh! leichter ist doch ein Display direkt unter den nano zu hängen! https://www.mikrocontroller.net/attachment/465632/esp32_nano328p.jpg wer sich einen nano mit Kabel kauft hat alles um sofort loszulegen https://www.ebay.de/itm/MINI-USB-Nano-V3-0-ATmega328P-CH340G-FT232-5V-16M-Micro-controller-Board-Arduino/402319347361 OK die Stiftleisten müssten gelötet werden Display (die mit weisser Beleuchtung sind besser ablesbar) https://www.ebay.de/itm/For-Arduino-84-48-Nokia-5110-LCD-White-Blue-Display-Screen-Module-Module-DIY-AHS/302921972821 Breadboard (die transparenten gefallen mir besser) https://www.ebay.de/itm/Mini-Solderless-Breadboard-Clear-Transparent-Material-with-400Points-83-x-55-mm/402299493793 sollte man gleich mal mehr bestellen! was braucht man noch? Programmierwillen, einen PC, windows oder debian oder Raspi mit OS und raspian desktop
Joachim B. schrieb: > was braucht man noch? > einen PC, windows oder debian oder Raspi mit OS und > raspian desktop … nun wollte ich es auch mal versuchen, habe aber nur Arch hier, auch auf den Raspberry Pis. Gemein :( Stefan ⛄ F. schrieb: > Deine Idee, dass man den Mikrocontroller zwischendurch resetten können > soll ohne den Zählerstand zu verlieren, würde ich nochmal überdenken. Ließe sich da nicht was mit externem SRAM bauen? Solange Spannung anliegt, sollte es die Daten doch behalten?
:
Bearbeitet durch User
Georg M. schrieb: > https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/ Ich würde es auch nicht über Interrupts machen. Zählen kann man durch die Timer komplett in Hardware, wenn man die Lichtschranke als Clock für den Timer nimmt.
Sebastian R. schrieb: > Ich würde es auch nicht über Interrupts machen. > > Zählen kann man durch die Timer komplett in Hardware, wenn man die > Lichtschranke als Clock für den Timer nimmt. Richtig, aber dann wäre es schon nicht mehr nur Arduino-Programmierung, sondern eine direkte Mikrocontroller-Programmierung. Dann würde man quasi gezwungen, das Datenblatt zu lesen.
Programmieranfänger schrieb: > Was ich nicht machen wollte, ist z.B. einen Digital-IN-Eingang immer > abzufragen, sonst muss ich das Programm ja schnell laufen lassen - > zumindest mindestens > 2 schneller als ein zu erwartender > Flankendurchgang. Ja so macht man das, überhaupt kein Problem. Allerdings läßt man die CPU-Hardware abfragen, nennt sich externer Interrupt. Lassen wir dem Arduino 160 Zyklen Zeit für einen Interrupt, kann er bei 16MHz Takt bequem alle 10µs einen Interrupt auslösen. Bei einem drehenden Teil wären das 6000000rpm. Das sollte doch wohl reichen. Anzeigen sollte man aber nicht schneller als 5 Werte/s, sonst sieht man nur unleserliches Flackern der untersten Stellen.
Jack V. schrieb: > Ließe sich da nicht was mit externem SRAM bauen? Solange Spannung > anliegt, sollte es die Daten doch behalten? Das ist komplizierter, als das interne EEPROM zu verwenden.
Jack V. schrieb: > Ließe sich da nicht was mit externem SRAM bauen? Solange Spannung > anliegt, sollte es die Daten doch behalten? es gibt doch FRAM, viel Speicher braucht man doch nicht! https://www.elektronikpraxis.vogel.de/fram-grundlagen-und-vorzuege-ferroelektrischer-speicher-a-646777/ https://www.elektronik-kompendium.de/sites/com/0610041.htm https://arduino-projekte.webnode.at/meine-libraries/fram-speicher/ Sebastian R. schrieb: > Zählen kann man durch die Timer komplett in Hardware, wenn man die > Lichtschranke als Clock für den Timer nimmt. letztens wurde hier berichtet das auch optische Sensoren prellen können also sollte man immer eine Entprellroutine nachschalten, Timer Verfahren nach Dannegger! Peter D. schrieb: > nennt sich externer Interrupt. von daher, lieber deine Timer IRQ nutzen!
Also die Zählscheibe vor dem Inkrementengeber hat 30 Schlitze und die Maschine dreht bis ca. 2000 Umdrehungen pro Minute. Das sind dann 60.000 Signale in der Sekunde bei maximaler Geschwindigkeit. Schafft der Arduino das?
Programmieranfänger schrieb: > Schafft der > Arduino das? ich weiss das der Arduino mit 16 MHz locker IRMP auswertet mit 15000 IRQ/s lass doch mal rechnen 1/60000 sind 16,666 µs mit Portauslesen im 62,5 ns Bereich sollte das Auslesen also möglich sein. wie lange du nun rechnest bis wieder gelesen werden muss liegt an dir und deinen Programmierkenntnissen! Notfalls musst du auf die Float LIB verzichten und in inline assembling gehen. mittlerweile gibt es ja auch viel schnellere Arduino als nur 16 MHz
:
Bearbeitet durch User
Programmieranfänger schrieb: > Also die Zählscheibe vor dem Inkrementengeber hat 30 Schlitze und die > Maschine dreht bis ca. 2000 Umdrehungen pro Minute. Das sind dann 60.000 > Signale in der Sekunde bei maximaler Geschwindigkeit. Schafft der > Arduino das? Vorsicht. Immer auf die Einheiten achten. 2000 1/min entsprechen, gemäß 1/min = 1/60 s, 2000 1/min * 1 min / 60 s = 33,333 1/s Bie 30 Schlitzen sind das 33,333 1/s * 30 = 999,9 1/s Signale entsprechend rund 1ms. Das ist das 100-fache dessen, was Peter kalkuliert hat. Reicht noch für ne schnelle Tasse Kaffee zwischendurch. :-)
Programmieranfänger schrieb: > Also die Zählscheibe vor dem Inkrementengeber Warum möchtest du Incrementgeber durch Zähler auswerten und nicht durch die richtige Art einen Incrementalgeber auszuwerten ? http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29 > hat 30 Schlitze und die > Maschine dreht bis ca. 2000 Umdrehungen pro Minute. Das sind dann 60.000 > Signale in der Sekunde bei maximaler Geschwindigkeit. Schafft der > Arduino das? Er kenn wenigstens besser rechnen als du 20000 upm sind 216 pro Sekunde sind 6500 pro Sekunde. Ein ATmega328 schafft 250000 pro Sekunde (1000000 Auswertungen), ganz ohne Hardwarezähler (siehe oben). Als Arduinoanfänger mit Mathedefiziten kann es natürlich schon bei 6000 knapp werden wenn man auf biegen und brechen ein schlechtes Programm schreibt.
MaWin schrieb: > Als Arduinoanfänger mit Mathedefiziten kann es natürlich schon bei 6000 > knapp werden wenn man auf biegen und brechen ein schlechtes Programm > schreibt. Falls das passiert, helfen wir gerne weiter.
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.