Hallo liebes Forum,
ich habe ein vielleicht ungewöhnliches Anliegen. Ich möchte die Drehzahl eines AC-Generators messen, dazu lege ich die Generatorspannung auf einen Analogeingang (habe sie natürlich auf 5V begrenzt). Jetzt benötige ich die Frequenz eines Sinussignals mit einer Amplitude die zwischen 0 und 5V Schwankt.
Beim Encoder benutzt man eine Interuptfunktion zur Auswertung, kann man das auch mit dem Analogsignal machen?
Ich würde mich über Code-Vorschläge feuen
Vielen Dank
DrFlopp
Die Arduino Uno und Duemilanove mit dem Atmega328 haben ja nur zwei Interrupteingänge an D2 und D3, von daher scheidet deine Idee aus, das Analogsignal direkt auszuwerten. Wie wäre es denn, mit einem Komparator das Analogsignal zu triggern und auf einen der genannten Digitalpins zu legen?
Achtung: Arduino verträgt keine negativen Spannung an den Eingängen.
Prinzipiell funktionieren auch keine analogen Signale für Interrupt oder für digitale Eingänge.
Gib das Sinussignal gleichgerichtet und spannungsbegrenzt auf einen Schnitttrigger und dann auf den Eingang. Grüße Uwe.
Stimmt da war doch was mit den Interupteingängen.
Hast Du einen Tipp für einen Comperatorbaustein?
Die negative Halbwelle habe ich natürlich abgeschnitten, und die positive Halbwelle habe ich auf 4,7V begrenzt.
Die Schaltung und die Auswertung funktioniert auch schon, aber halt nicht zuverlässig. Ich brauche eine sehr zuverlässige Auswertung, sonst wird das Geräusch sehr teuer.
Vielen Dank
DrFlopp
Ein 7414 sollte es tun, das sind 6 invertierende Schmitt-Trigger. Zu finden beispielsweise bei Reichelt unter:
http://www.reichelt.de/ICs-74HC-DIL/74HC-14/index.html?;ACTION=3;LA=444;GROUP=A2231;GROUPID=2930;ARTICLE=3140
Ja der könnte funktionieren,
warum ich den Schmitt-Trigger bisher nicht benutzt habe war, dass dieser erst bei Spannungen größer 1V ein High rausgibt. Ich bin kein Elektroniker, gibt es eine Möglichkeit die Schaltschwelle durch eine externe Beschaltung einzustellen, z.B. 0,1V.
Vielen Dank für die Hilfe
DrFlopp
Ich hatte ja Anfangs einen Komparator vorgeschlagen. Nimmt man als OpAmp einen Rail-To-Rail-Typen (Ausgangsspannung im Maximum liegt gleichauf mit der Versorgungsspannung, als Minimum nahe Masse), kann man auch mit kleinen Spannungen arbeiten, ohne eine negative Versorgungsspannung zu nutzen.
Die Hysterese eines Schmitt-Triggers lässt sich mit einem zusätzlichen Widerstand bewerkstelligen.
DrFlopp:
Ja der könnte funktionieren,
warum ich den Schmitt-Trigger bisher nicht benutzt habe war, dass dieser erst bei Spannungen größer 1V ein High rausgibt. Ich bin kein Elektroniker, gibt es eine Möglichkeit die Schaltschwelle durch eine externe Beschaltung einzustellen, z.B. 0,1V.
Die Schaltschwellen kann man bei einem Schnitttriger nicht einstellen.
Ich verstehe aber nicht wieso Du das brauchst. Du mißt ja die Zeit zwischen 2 LOW-HIGH Übergängen. Bei welcher Spannung die auftreten ist für die Frquenzmessun irrilevant.
grüße Uwe
Nur für's Protokoll: man kann auf JEDEM Pin Interrupts auslösen lassen. Siehe Datenblatt "11. Interrupts" und "22. Analog Comparator". Insbesondere die folgenden Vektoren sind interessant:
4 0x003 PCINT0 Pin Change Interrupt Request 0
5 0x004 PCINT1 Pin Change Interrupt Request 1
6 0x005 PCINT2 Pin Change Interrupt Request 224 0x017 ANALOG COMP Analog Comparator
Insbesondere kann man sich raussuchen ob man die analogen Pins per PCINT oder ANALOG COMP triggern lassen will (oder beides).
22.2 Analog Comparator Multiplexed Input
It is possible to select any of the ADC7..0 pins to replace the negative input to the Analog Comparator.
The ADC multiplexer is used to select this input, and consequently, the ADC must be
switched off to utilize this feature. If the Analog Comparator Multiplexer Enable bit (ACME in
ADCSRB) is set and the ADC is switched off (ADEN in ADCSRA is zero), MUX2..0 in ADMUX
select the input pin to replace the negative input to the Analog Comparator, as shown in Table
22-1. If ACME is cleared or ADEN is set, AIN1 is applied to the negative input to the Analog
Comparator
Udo
Hallo Udo
Einigen wir uns auf folgendes:
C-Funktions-mäßig kann nu d2 und d3 als Interrupt Quelle dienen. Mit direkter Registerprogrammierung alle.
Ein bestimmter ADC-Wert kann keinen Interrupt auslösen.
Grüße Uwe
Jeder Interruptvektor kann benutzt werden um C Funktionen anzuspringen. Im Playground findet sich auch eine Library um PCINT ohne Registermanipulation zu benutzen http://www.arduino.cc/playground/Main/PinChangeInt.
Das ein bestimmter ADC Wert keinen Interrupt auslöst mag sein, aber das war nicht die Frage. Die Frage war ob man an anlog Pins Interrupts auslösen kann und da ist die Antwort ja. Die nächste Frage ist ob man die Schaltschwelle einstellen kann und da ist die Antwort ebenfalls ja. Einfach ein Spannungsteiler an VREF und den Komparator entsprechend einstellen. Was die Spannungsanpassung / das Entfernen des Gleichspannungsanteils angeht: noch ein Spannungsteiler und ein Kondensator --> fertig. Allerdings war in der Frage von einem Sinus zwischen 0 und 5V die Rede --> gar keine externen Teile nötig wenn man nicht beim "Nulldurchgang" auslösen will. Grund: man kann auch die Bandgap Referenz nehmen.
Wie's geht steht im Datenblatt und bei mikrocontroller.net
Auf was ich raus will: es reichen ein paar passive Teile. Man braucht keine zusätzlichen Bausteine.
Hallo Udo.
Die nächste Frage ist ob man die Schaltschwelle einstellen kann und da ist
die Antwort ebenfalls ja. Einfach ein Spannungsteiler an VREF und den
Komparator entsprechend einstellen.
Da muß man aber dazusagen, daß dann die max Spannung die die analogen Eingänge messen können vom Spannungsteiler an VREF abhängen und das eine gewisse Berücksichtigung im Code nötig macht.
Grüße Uwe
Hallo Leute,
vielen Dank für eure Anregungen, auch wenn ich als Neuling und Enlektronikleihe noch nicht alles durschaut habe.
Ich habe das folgende Problem, der Generator soll so bald er eine minimale Drehzahl hat bereits ausgewertet werden. Er produziert also noch eine sehr geringe Spannung, bei hohen Drehzahlen produziert der Generator natürlich größere Spannungen. Deshalb benötige ich eine sehr geringe Schaltschwelle.
Der Vorschlag sth77 scheint interessant zu sein, das werde ich mal versuchen umzusetzen.
Vielen Dank
DrFlopp
kann ich dir für dein Projekt mal den
LM2907/LM2917 Frequency to Voltage Converter
ans Herzlegen der hat einen Differenz Spannungseingang und kann mit Beschaltung genau das was du willst. du bekommst abhängig von der Frequenz eine Analog Spannungssignal und bist dann absolut unabhängig von den Interrupts
Hallo Volvodani,
das klingt sehr interessant, ich glaube das ist eine Lösung, doch als Elektroleihe stehe ich bei der Schaltungsauslegung etwas hilflos da.
Hast Du schon ein mal so etwas gemacht?
Gruß
DrFlopp
Ja habe ich schon gemacht als Drehzahlauswertung auf deinem elektronischen Ladedruckregelung da brauchte ich einen Analogwert für den Derhzahlbrereich. Ich werde mir das mal gleich anschauen. Ich brauche auf jeden Fall die maximale Frequenz die du Messen willst auf und die maximale Spannung. Der rest ist nur ein bisschen rechnen und im Datenblatt lesen XD