Forum: Mikrocontroller und Digitale Elektronik PIC-Programmierung, analoger Input, Debugging


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Harry R. (harryr)


Lesenswert?

Hallo zusammen,

ich brauche (mal wieder) kompetente Beratung , diesmal geht es
um die Programmierung analoger Inputs/ADC zB. beim PIC12(L)F1840.

Wie man die analogen Eingänge konfiguriert kann man sich mit diversen 
Tutorials erarbeiten. Vorab, ich habe noch keinen (zB) PIC12(L)F1840
und daher noch nichts wirklich ausprobiert, ich möchte vorher schon ein 
paar Fragen klären, kann ja nichts schaden sich frühzeitig zu 
informieren  :-)

Nehmen wir an ich möchte an einem analogen Eingang eine Spannung im 
Tonfrequenzbereich "messen".

Diese Eingangsspannung fällt exponentiell ab, ich möchte wissen,
wann ein gewisser Wert unterschritten wird.

Ein AD-Wandler im PIC12(L)F1840 hat 10Bit-Auflösung, was bedeutet das 
praktisch ? 10Bit entspricht einer Auflösung von 0-1023.

Die Versorgungsspannung beträgt 5V, also läge die Auflösung bei 5V/1023,
=~ 5mV ?

Ich möchte aber zb wissen, wann 1mV unterschritten wird.

Meine Idee:

Die zu messende Spannung wird mit OpAmp (Verstärkung 100), transformiert 
also eine mögliche Eingangsspannung von 0 - 5V auf 0 - 500 V. Geht 
natürlich nicht, aber da mich ja nur der Bereich zwischen 0 und 10mV 
interessiert, begrenze ich den Eingang einfach mit einer Diode auf sagen 
wir 4,7V (das entspräche dann einer Ursprungsspannung von 50mV).
Bei 10 Bit Auflösung würde ich dann in einer Auflösung von 500µV messen.

Kann man so verfahren ?


Nächste Frage, wie debugge ich so etwas ?

Wenn ich tatsächlich die analoge Eingangsspannung  mit dem ADC so (oder 
anders, wer weiß) messen kann, wie debugge/teste/verifiziere ich im 
Programm dann was ich da messe ? Ist ja nur graue Theorie und vielleicht 
ist mein Programm auch korrekt, aber wie bekomme ich das ohne 
Terminal/etc heraus ?

Sorry, ich bin neu auf diesem Gebiet und kann mir im Moment nicht 
vorstellen, wie ein Profi das Problem löst.


Ich hoffe auf Vorschläge/Ideen/Widerspruch.

Viele Grüße
Harry

von Rainer W. (rawi)


Lesenswert?

Harry R. schrieb:
> Die Versorgungsspannung beträgt 5V, also läge die Auflösung bei 5V/1023,
> =~ 5mV ?

Es kommt nicht auf die Versorgungsspannung, sondern auf die gewählte 
Referenzspannung an.

> Nehmen wir an ich möchte an einem analogen Eingang eine Spannung im
> Tonfrequenzbereich "messen".
> Diese Eingangsspannung fällt exponentiell ab

Eine Spannung im Tonfrequenzbereich verhält sich sinusförmig. Willst du 
vielleicht gar nicht den zeitlichen Verlauf der Spannung messen, sondern 
eventuell die Änderung der Amplitude über die Zeit?
Wie kommst du auf "exponentiell"?

von Harald K. (kirnbichler)


Lesenswert?

Harry R. schrieb:
> Die Versorgungsspannung beträgt 5V, also läge die Auflösung bei 5V/1023,
> =~ 5mV ?

Nö, die Referenzspannung des ADC wird nicht bei 5V liegen. Die kann 
entweder aus einer internen Referenzspannungsquelle abgeleitet werden 
oder extern angelegt werden -- sieh ins Datenblatt, da steht das drin.

von Harry R. (harryr)


Lesenswert?

Rainer W. schrieb:
> Harry R. schrieb:
>> Die Versorgungsspannung beträgt 5V, also läge die Auflösung bei 5V/1023,
>> =~ 5mV ?
>
> Es kommt nicht auf die Versorgungsspannung, sondern auf die gewählte
> Referenzspannung an.
Das bedeutet, dass ich die Eingangsspannung gegen eine Referenzspannung 
messe ? Das begrenzt (bei Referenzspannung 1V zb) dann aber auch die max 
messbare Spannung am analog-Eingang, oder ?
Kannst du das bitte genauer erläutern ?

>> Nehmen wir an ich möchte an einem analogen Eingang eine Spannung im
>> Tonfrequenzbereich "messen".
>> Diese Eingangsspannung fällt exponentiell ab
>
> Eine Spannung im Tonfrequenzbereich verhält sich sinusförmig. Willst du
> vielleicht gar nicht den zeitlichen Verlauf der Spannung messen, sondern
> eventuell die Änderung der Amplitude über die Zeit?
> Wie kommst du auf "exponentiell"?
Das Signal kommt aus einer E-Gitarre und fällt schnell ab.
Sämtliche Werte, die ich in meinem Ursprungspost geschrieben habe,
sind nur in der Größenordnung richtig.

Ich arbeite mich mit diesem Post in das Thema ein, das bedeutet auch, 
dass ich neue Begrifflichkeiten lernen muss.

von Harry R. (harryr)


Lesenswert?

Harald K. schrieb:
> Harry R. schrieb:
>> Die Versorgungsspannung beträgt 5V, also läge die Auflösung bei 5V/1023,
>> =~ 5mV ?
>
> Nö, die Referenzspannung des ADC wird nicht bei 5V liegen. Die kann
> entweder aus einer internen Referenzspannungsquelle abgeleitet werden
> oder extern angelegt werden -- sieh ins Datenblatt, da steht das drin.
Okay, wie schon in einem anderen Beitrag weiter oben geschrieben,
ich arbeite mich mit diesem Post in das Thema ein :-)
(Bevor ich dann mit etwas mehr/ausreichendem Wissen) loslege.

von H. H. (Gast)


Lesenswert?

Harry R. schrieb:
> Das Signal kommt aus einer E-Gitarre

Verstärken!

von Andras H. (kyrk)


Lesenswert?

Harry R. schrieb:
> Kann man so verfahren ?

Theoretisch ja. Wie du das erreichst ist eine andere Frage. Ob du beim 
OP Ampg irgendwie limitierts oder den ADvref so wählst. Aber ich denke, 
es wird wegen den Noise schon probleme geben. Würde mich wundern wenn 
das so einfach klappen würde.

Debuggen: Es gibt mehrere Wege. Ich würde intern, erstmal einen Buffer 
aufmachen, da alles ring buffer mässig rein wandeln. Und dann wenn die 
Spannung runterfällt darauf ein IF condition schreiben und breakpoint 
hitten. Natürlich musst du den ADC eingang mit ein Testsignal füttern. 
Am besten wiederholdend damit du easy debuggen kannst. Aus dem Buffer 
kannst du dir angucken wie das Signal aussieht, und ob du wirklich 
darauf reagierst worauf du auch reagieren wolltest. Ab dem Punkt wo der 
Breakpoint gehittet wird, hast ja die Syncronität zum aussenwelt 
verlohren. Also Es ist halt immer so, dass bei jedem Breakpoint du ein 
klein wenig anderes Signal hast. Und das auf ein PIC12F. Würde ich mal 
sagen, das wird dir kein spass machen. Bin unsicher wie debuggbar die 
sind. Habe die überhaupt genügend PINs zum debuggen? Vielleicht nein, 
dann musst du natürlich über ein PIN ein UART machen und dir daten 
rausprinten. Wird nicht einfach.

Mach dein leben nicht schwer, kauf dir etwas was schneller ist. dsPIC 
oder PIC32.

von C-hater (c-hater)


Lesenswert?

Harry R. schrieb:

> Vorab, ich habe noch keinen (zB) PIC12(L)F1840
> und daher noch nichts wirklich ausprobiert

Warum muß es ein PIC12(L)F1840 oder überhaupt ein PIC12 sein?

Mit einem 12Bit-ADC wäre das Problem ohne jegliche größere Klimmzüge 
lösbar. Und es gibt Unmassen µC, die über einen solchen verfügen. Warum 
also nicht einfach einen davon nehmen?

Aber auch mit 10Bit-ADCs wären (relativ) einfache Lösungen möglich, wenn 
der µC schon Vorverstärker enthält. Sampelt man halt dasselbe Signal auf 
einem Kanal "as is" und auf einem zweiten vorverstärkt. Es gibt auch 
etliche µc, bei denen diese Technik möglich wäre. Warum also nicht 
einfach einen davon nehmen?

Und da du ja den PIC12 noch überhaupt nicht hast, sollte egentlich ja 
auch nichts dagegen sprechen, gleich was anderes zu kaufen...

von Rainer W. (rawi)


Lesenswert?

Harry R. schrieb:
> Das bedeutet, dass ich die Eingangsspannung gegen eine Referenzspannung
> messe ?
Genau

> Das begrenzt (bei Referenzspannung 1V zb) dann aber auch die max
> messbare Spannung am analog-Eingang, oder ?
Genau

> Kannst du das bitte genauer erläutern ?
Lies dir im Datenblatt des PIC12(L)F1840 die Kapitel 16 und 14 durch.
Die Abbildung 16-1 zeigt das Blockdiagramm des ADC mit den 
Auswahlmöglichkeiten für die Referenzspannung des ADC.
Im Kapitel 14 wird die FVR behandelt.
https://ww1.microchip.com/downloads/aemDocuments/documents/OTH/ProductDocuments/DataSheets/40001441F.pdf

von Motopick (motopick)


Lesenswert?

> wie debugge/teste/verifiziere ich im
> Programm dann was ich da messe

Einen PIC mit mehr Beinchen nehmen. An die kann man dann einen
DAC anklemmen, und sich (Zwischen-)resultate auf einem Oszi ansehen.
Oft reichen zur Beurteilung bereits 6 bit...

von Harry R. (harryr)


Lesenswert?

Motopick schrieb:
>> wie debugge/teste/verifiziere ich im
>> Programm dann was ich da messe
>
> Einen PIC mit mehr Beinchen nehmen. An die kann man dann einen
> DAC anklemmen, und sich (Zwischen-)resultate auf einem Oszi ansehen.
> Oft reichen zur Beurteilung bereits 6 bit...
Ich bin Neuling, kannst du das bitte ein wenig mehr ausführen ?

Die Anzahl der Beinchen ist mir egal, der genannte PIC war einer, dessen
Spezifikation ich mir angeschaut habe, um ins Thema hineinzukommen ..

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Harry R. schrieb:
> an einem analogen Eingang eine Spannung im Tonfrequenzbereich "messen"

Du misst damit EINE Spannung zum Messzeitpunkt und keine Freq.. Wenn du 
zusätzlich auch noch den zeitlichen Verlauf(Freq./Signalverlauf) einer 
Spannung haben willst musst du entsprechend viele Messwerte erfassen und 
diese dann je nach Wunsch auswerten.

ADC verfügen am Eingang in der Regel über sowas:
- https://de.wikipedia.org/wiki/Sample-and-Hold-Schaltung
- https://en.wikipedia.org/wiki/Quantization_(signal_processing)

Was sollen deine 1mV sein?
Der niedrigste Wert der im zeitlichen Verlauf auftritt? Bei z.B. einem 
Sinus von 0 bis Umax wäre das jedesmal wenn sich der Wert innerhalb 
einer Periode dem Minimum annähert. Das Gesamtsignal wäre aber immer 
noch Umax/2 im Durchschnitt. 1mV im Durchschnitt? Dann musst du erstmal 
genügend Messwerte erfassen und daraus den Durchschnitt errechnen. Usw.

Mach dir besser erstmal ein genaueres Bild darüber wie ein ADC überhaupt 
arbeitet. Dann wie dein Signal überhaupt aussieht und was du davon genau 
auswerten willst.

von Motopick (motopick)


Lesenswert?

> der genannte PIC war einer, dessen
> Spezifikation ich mir angeschaut habe

Mit dieser Methode der Auswahl wirst du nicht weit kommen.
Dann schau dir halt noch den (z.B.) 16F887 an.

>> Oft reichen zur Beurteilung bereits 6 bit...
> Ich bin Neuling, kannst du das bitte ein wenig mehr ausführen ?

6 bit enspricht 64 unterscheidbaren Signalpegeln.
Das reicht, um eine Uebersteuerung oder grundsaetzliche Fehler
in Algorithmen zu erkennen. Mehr kann man auf den ueblichen
Oszis ohnehin kaum erkennen.

von Franko P. (sgssn)


Lesenswert?

Hallo
ich würde auch einen anderen, größeren/neueren PIC empfehlen. Wenn du so 
wenig Speicher hast, kannst du oft nicht mal Befehle aus der Bibliothek 
wie sprintf (auch zu debug-Zwecken geeignet) verwenden, da dann der 
Speicher voll ist.

Gruß

von Harry R. (harryr)


Lesenswert?

Irgend W. schrieb:

>
> Du misst damit EINE Spannung zum Messzeitpunkt und keine Freq.. Wenn du
> zusätzlich auch noch den zeitlichen Verlauf(Freq./Signalverlauf) einer
> Spannung haben willst musst du entsprechend viele Messwerte erfassen und
> diese dann je nach Wunsch auswerten.
>
> ADC verfügen am Eingang in der Regel über sowas:
> - https://de.wikipedia.org/wiki/Sample-and-Hold-Schaltung
> - https://en.wikipedia.org/wiki/Quantization_(signal_processing)
>
> Was sollen deine 1mV sein?
> Der niedrigste Wert der im zeitlichen Verlauf auftritt? Bei z.B. einem
> Sinus von 0 bis Umax wäre das jedesmal wenn sich der Wert innerhalb
> einer Periode dem Minimum annähert. Das Gesamtsignal wäre aber immer
> noch Umax/2 im Durchschnitt. 1mV im Durchschnitt? Dann musst du erstmal
> genügend Messwerte erfassen und daraus den Durchschnitt errechnen. Usw.
>
> Mach dir besser erstmal ein genaueres Bild darüber wie ein ADC überhaupt
> arbeitet. Dann wie dein Signal überhaupt aussieht und was du davon genau
> auswerten willst.
Okay, ich präzessiere.
Das Analogsignal wird vorher gleichgerichtet und mit einem Kondensator 
geglättet, ich messe also sowas wie den Durchschnitt.

von Harald K. (kirnbichler)


Lesenswert?

Harry R. schrieb:
> Das Analogsignal wird vorher gleichgerichtet und mit einem Kondensator
> geglättet, ich messe also sowas wie den Durchschnitt.

Das hat dann mit "Spannung im Tonfrequenzbereich messen" nicht mehr sehr 
viel zu tun. Und mit "Das Signal kommt aus einer E-Gitarre und fällt 
schnell ab" auch nicht.

Welches Problem willst Du jetzt eigentlich lösen? Lass' den ADC, den 
µC und all' das Geraffel beseite, tritt noch einen Schritt weiter weg 
und beschreib' ganz grob, was das eigentliche Ziel Deiner Übung sein 
soll.

von Rainer W. (rawi)


Lesenswert?

Harry R. schrieb:
> Das Analogsignal wird vorher gleichgerichtet und mit einem Kondensator
> geglättet, ich messe also sowas wie den Durchschnitt.

Das hört sich eher nach einem Spitzenwert an.

von Hans (piaggio)


Lesenswert?

Harry R. schrieb:
> .....mit einem Kondensator
> geglättet, ich messe also sowas wie den Durchschnitt.

Oder ist ein aktiver Spitzenwertgleichrichter sinnvoll anwendbar?
https://www.elektroniktutor.de/analogverstaerker/aktivglr.html

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Hans schrieb:
> Oder ist ein aktiver Spitzenwertgleichrichter sinnvoll anwendbar?

Wenn du da nur ein Noisegate mit MC machen willst, dann geht das damit 
am besten. Dann muss der PIC nur ab und zu mal eine gleichgerichtete 
Spannung messen.

von Rainer W. (rawi)


Lesenswert?

Hans schrieb:
> Oder ist ein aktiver Spitzenwertgleichrichter sinnvoll anwendbar?
> https://www.elektroniktutor.de/analogverstaerker/aktivglr.html

Das kommt immer auf den Sinn des Unterfangens ist - werden wir also 
(vielleicht) noch erfahren ...

Im Gegensatz zum Präzisionsgleichrichter wäre ein einfacher 
Gleichrichter im unteren Spannungsbereich auch noch ziemlich 
nichtlinear.

: Bearbeitet durch User
von Harry R. (harryr)


Lesenswert?

Rainer W. schrieb:
> Hans schrieb:
>> Oder ist ein aktiver Spitzenwertgleichrichter sinnvoll anwendbar?
>> https://www.elektroniktutor.de/analogverstaerker/aktivglr.html
>
> Das kommt immer auf den Sinn des Unterfangens ist - werden wir also
> (vielleicht) noch erfahren ...
>
> Im Gegensatz zum Präzisionsgleichrichter wäre ein einfacher
> Gleichrichter im unteren Spannungsbereich auch noch ziemlich
> nichtlinear.
Ich denke, ich sollte mal den ganzen Plan enthüllen
(wobei er ja schon von euch dekodiert wurde)  :-)

Ja, es soll ein Noise Gate werden.

Aufbau:

Eingang, Aufteilung in zwei Signal-Pfade:

a) Impedanzwandler für das Eingangssignal -> Signal-Out

b) Gleichrichten des Signals (Präzisionsgleichrichter)
(also zb ein TL072)

Dann kommt der PIC:

In einer Endlosschleife wird fortwährend in zeitlich konstantem 
Intervall (z. B. 1 msec) das Signal von b) gemessen.

Der Algorithmus zählt die Zeitpunkte, wo das Signal kontinuierlich 
unter einer Minimalspannung liegt. Nach X Zeitpunkten wird das 
ursprüngliche Analogsignal gemutet (also quasi ein digitaler Attack).

Damit das Attack variable einstellbar wird, wird ein Poti an einen 
analog-Eingang angeschlossen und Minimal- und Vollausschlag auf (zb) 1 - 
100 msec gemappt. Bei einer Auflösung von 10Bit gibt das eine gute 
Granularität von
100 µSec

Der gleiche Algorithmus (aber: >  Minimalspannung) wird für das Release 
(Decay) verwendet, auch da mit Poti an analogem Eingang.

Das ist der bis hierhin verfeinerte Plan.

Ihr fragt euch, warum ich den Plan nicht gleich aufgedeckt habe ?

Hier im "digitalTeil" des Forums wollte ich mich eigentlich
nur bzgl. des PICS schlaumachen, daher die Reduzierung auf den AD.
Wie ich das ganze debugge ist mir immer noch nicht klar, aber ihr habt 
ja schon ein paar Hinweise gegeben.

Ein anderer Grund ist, dass dieses Forum dazu neigt endlos über 
Nebensächlichkeiten zu diskutieren - das finde ich nicht immer hilfreich 
(für mich). Nix für ungut, das ist eine Eigenschaft des Forums und ich 
akzeptiere das dann auch klaglos.

So, da der Plan jetzt bekannt ist, kann ich ja nochmal zum PIC zurück,
was wäre denn eine Empfehlung für einen PIC, braucht der einen AD mit 10 
oder mit 12Bit ? Auf jeden Fall benötigt er bisher folgende PINs:

3x analog (analog-Signal vom P-Gleichrichter + 2 x Poti)

1x digiIn (Ein/Aus-Schalter)

2x digiOut (Gate- Status LED, EIN/AUS-LED)

Danke erst mal bis hierher.

Grüßle Harry

von Hans (piaggio)


Lesenswert?

Harry R. schrieb:
> Wie ich das ganze debugge ist mir immer noch nicht klar

Wenn man zum debuggen Signale aus dem Pic haben möchte kann man die 
programmieren und an einem Pin ausgeben - überwachen mit Oszi od. Led 
od. Terminal....
Weil kein Pin beim 12F1840 mehr frei ist kann man eben vorerst auf eine 
Ausgabe verzichten (z.B. ein/aus -Led?) die man erst dann hinzufügt wenn 
sonst alles funktioniert.
10bit od. 12bit? - ist eine Frage der angestrebten Auflösung - in 
Zusammenhang mit dem vorherigen Signal-Verstärkungsfaktor.

: Bearbeitet durch User
von Harry R. (harryr)


Lesenswert?

Hans schrieb:
> Harry R. schrieb:
>> Wie ich das ganze debugge ist mir immer noch nicht klar
>
> Wenn man zum debuggen Signale aus dem Pic haben möchte kann man die
> programmieren und an einem Pin ausgeben - überwachen mit Oszi od. Led
> od. Terminal....
> Weil kein Pin beim 12F1840 mehr frei ist kann man eben vorerst auf eine
> Ausgabe verzichten (z.B. ein/aus -Led?) die man erst dann hinzufügt wenn
> sonst alles funktioniert.
> 10bit od. 12bit? - ist eine Frage der angestrebten Auflösung - in
> Zusammenhang mit dem vorherigen Signal-Verstärkungsfaktor.

"Oder Terminal" : Wie geht das denn ?

VG

von Harald K. (kirnbichler)


Lesenswert?

Harry R. schrieb:
> "Oder Terminal" : Wie geht das denn ?

Serielle Schnittstelle, Texte drauf ausgeben.

von Hans (piaggio)


Lesenswert?

...ein (oder mehrere) Bytes als serielles Signal (RS232) z.B. an einen 
PC senden. Dort läuft ein Programm (z.B. Realterm) das empfängt und 
anzeigt.
Ein USB-RS232 (od. USB-UART) -Wandler (Stick) ist erforderlich wenn der 
PC keine serielle Schnittstelle hat.
Meine Wandlersticks funktionieren auch mit 0V / 3...5V ohne dass die 
Umwandlung auf ca. +-10V nach rs232-Norm erforderlich ist.
(Aber aufpassen, dass die Polarität dann noch stimmt, weil die 
entsprechenden Wandler-ICs das Signal invertieren. ..also software 
anpassen oder mit einem Transistor invertieren.)

: Bearbeitet durch User
von Harry R. (harryr)


Lesenswert?

Hans schrieb:
> ...ein (oder mehrere) Bytes als serielles Signal (RS232) z.B. an einen
> PC senden. Dort läuft ein Programm (z.B. Realterm) das empfängt und
> anzeigt.
> Ein USB-RS232 (od. USB-UART) -Wandler (Stick) ist erforderlich wenn der
> PC keine serielle Schnittstelle hat.
> Meine Wandlersticks funktionieren auch mit 0V / 3...5V ohne dass die
> Umwandlung auf ca. +-10V nach rs232-Norm erforderlich ist.
> (Aber aufpassen, dass die Polarität dann noch stimmt, weil die
> entsprechenden Wandler-ICs das Signal invertieren. ..also software
> anpassen oder mit einem Transistor invertieren.)
Okay, da hatte ich die Frage wohl falsch gestellt. Man kann also einen 
Pin/Output als RS232-Port konfigurieren ?

von Rainer W. (rawi)


Lesenswert?

Harry R. schrieb:
> Man kann also einen Pin/Output als RS232-Port konfigurieren ?

RS232 schon gar nicht - der arbeitet nicht mit passenden Pegeln.
Und was meinst du mit "konfigurieren"?
Jeder freie IO-Pin ist geeignet, um per Software serielle Daten 
auszugeben. Du musst nur in geeigneter Weise mit dem Pin wackeln, d.h. 
zur rechten Zeit den rechten Pegel ausgeben.

: Bearbeitet durch User
von Hans (piaggio)


Lesenswert?

Harry R. schrieb:
> Man kann also einen
> Pin/Output als RS232-Port konfigurieren ?

Wenn eine entsprechende Hardware im µC vorhanden ist dann kann man das 
verwenden. Aber oft ist diese an bestimmte Pins gebunden.
Mit einem kleinen (Unter-)Programm kann man auch ohne spezielle Hardware 
ein serielles Signal ausgeben - und auch an jedes beliebige (freies) 
Ausgangspin.
Beschreibung und asm-softwarebeispiel gibts bei "sprut.de"
(Der Ausgangspegel entspricht aber noch nicht der RS232-Norm. Siehe 
meine Antwort weiter oben.)

: Bearbeitet durch User
von Bernd M. (berndmm)


Lesenswert?

Der PIC12F1840 hat ein EUSART-Modul, also eine universelle serielle 
Schnittstelle. Das TX-Signal kann man direkt an RX der COM-Schnittstelle 
eines PC oder eines entsprechenden Adapters anschließen. Beim RX-Signal 
sollte man noch einen 1kOhm Widerstand in Reihe schalten. Das ist zwar 
nicht spezifikationsgemäß, aber es funktioniert zuverlässig. Für die 
Polarität gibt es normalerweise ein Konfigurationsbit, auf die Schnelle 
habe ich jetzt nur SCKP für das Senden gefunden.

Bernd

von Peter D. (peda)


Lesenswert?

Harry R. schrieb:
> Ein AD-Wandler im PIC12(L)F1840 hat 10Bit-Auflösung

Warum willst Du Dir das Leben maximal schwer machen, die PIC12 sind doch 
grauslich zu programmieren. Nimm wenigstens einen PIC18 oder höher.

Ich kenne mich besser mit den AVRs aus. Z.B. der ATtiny84 hat am ADC 
einen zuschaltbaren Verstärker x20. Mit der internen Referenz 1,1V löst 
man so bis 50µV auf. Und vorzugsweise überläßt man die ganze Rechnerei 
einem C-Compiler, der AVR-GCC ist ganz brauchbar.

Zur Hardware. Das Signal muß man über einen Kondensator und einen 
Spannungsteiler nach VREF einkoppeln, so daß es immer im Bereich 0..VREF 
liegt.

Zur Software. Eine Gitarre erzeugt ja keine hohen Frequenzen. Man läßt 
einfach den ADC durchlaufen und merkt sich die lokalen Maxima und 
Minima. Damit hat man dann die momentane Spitzenamplitude. Das 
Gleichrichten macht also die Software.
Damit entfällt auch die Verzögerung durch den Glättungskondensator eines 
extra Gleichrichters. Das Ergebnis ist direkt nach einer Halbwelle 
verfügbar.

von Harry R. (harryr)


Lesenswert?

Peter D. schrieb:
> Harry R. schrieb:
>> Ein AD-Wandler im PIC12(L)F1840 hat 10Bit-Auflösung
>
> Warum willst Du Dir das Leben maximal schwer machen, die PIC12 sind doch
> grauslich zu programmieren. Nimm wenigstens einen PIC18 oder höher.
>
> Ich kenne mich besser mit den AVRs aus. Z.B. der ATtiny84 hat am ADC
> einen zuschaltbaren Verstärker x20. Mit der internen Referenz 1,1V löst
> man so bis 50µV auf. Und vorzugsweise überläßt man die ganze Rechnerei
> einem C-Compiler, der AVR-GCC ist ganz brauchbar.
>
> Zur Hardware. Das Signal muß man über einen Kondensator und einen
> Spannungsteiler nach VREF einkoppeln, so daß es immer im Bereich 0..VREF
> liegt.
>
> Zur Software. Eine Gitarre erzeugt ja keine hohen Frequenzen. Man läßt
> einfach den ADC durchlaufen und merkt sich die lokalen Maxima und
> Minima. Damit hat man dann die momentane Spitzenamplitude. Das
> Gleichrichten macht also die Software.
> Damit entfällt auch die Verzögerung durch den Glättungskondensator eines
> extra Gleichrichters. Das Ergebnis ist direkt nach einer Halbwelle
> verfügbar.
Volltreffer, natürlich, dein Vorschlag ist goldrichtig :-)

Hätte ich selbst drauf kommen sollen, aber manchmal sieht man den Wald 
... usw :-(


Grüßle

: Bearbeitet durch User
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.