Hallo!! Ich hätte eine Frage: Könnte mir jemand erklären wie ich eine Amplitudenmessung mit dem PIC 18f4550 realisieren kann. mfg
Mit dem ADC. Wie genau hängt von deinem zu messenden Signal ab: Wenns recht langsam ist: Komplett digitalisieren, die Amplitude in Software berechnen Wenns zu schnell dafür ist: Vorher die Amplitude mit entsprechender Analogschaltung "gleichrichten", und dann an den ADC. Im einfachsten Fall reicht dafür eine Diode und ein Kondensator. Wenn du noch ein paar Details rausrückst, kann man dir wahrscheinlich besser helfen.
Ich bekomme von einem Gleichrichter ein Signal. Bei diesem Signal muss ich die Amplitude und die Frequenz messen. Die Amplitude muss gemessen werden damit ich einen Verstärker einstellen kann. (output_low(pin_b0), output_high(pin_b1) und output_low(pin_b2)). Danke für die rasche Antwort.
Das ist etwas konfus... Beschreib doch mal dein Signal genauer... Frequenz: 50Hz? Audio? 1MHz? 50MHz? Und die Pegel: 10mV pp, 100mV? 10V? Die Frequenzmessung ist mit dem PIC relativ einfach, da der ohne externe Vorteiler etc, direkt 50MHz als externen Trigger für seinen Counter verträgt. Allerdings ist die Gleichrichtung zum Frequenzmessen eher Kontraproduktiv. und du brauchst jetzt zusätzlich zum Frequenzzähler noch einen weiteren Verstärker, den du softwaremäßig ansteuern willst um das Eingangssignal auf eine definierte Amplitude zu bringen? => das geht mit einer rein analogen Lösung einfacher und besser. Oder reicht es evtl nur die Frequenz beizubehalten, und am Ausgang ein schönes TTL Signal zu bekommen? Und was meinst du mit output_low(pin_b0) ? Ach ja, und die Antworten in deinem Zweit-Thread nicht übersehen, da sind auch hilfreiche dabei: Beitrag "Amplitudenmessung pic 18f4550"
Stichwort: Spitzenwertgleichrichter z.B. sowas... http://www.loetstelle.net/grundlagen/operationsverstaerker/opamp_5.php
Ich bekomme ein gleichgerichtetes Signal. Von diesem Signal muss ich die Amplitude messen und vergleichen. Wenn sie zu klein ist muss ich am pin_b0 ein "high" ausgeben wenn sie noch immer zu klein ist dann am pin_b1, sollte die Ampl. noch immer zu klein sein dann am pin_b3. Könnten Sie mir eventuell ein Codebeispiel geben!! mfg
@Ernst: ich glaube er will deine frage nicht verstehen ;) also: don't feed... auch könnte es sein, dass er die hausaufgabe zu wenig genau durchlesen möchte: fragt nach dem code ohne die spezifikation der ausgangslage nennen zu wollen. tzz tzz :(
Hi Nichts für ungut.... aber wenn du konkrette Hilfe brauchst, dann stell auch konkrette fragestellungen und stell dein Projekt etwas genauer vor. Aber wenn ich das richtig verstanden habe, dann würd ich auf die ganze AD-Geschichte verzichen und einfach das Signal entkoppeln, glätten und mit deinem anderen Signal mittels Comperator vergleichen. So und wenn du jetzt keine Ahnung hast wovon ich rede, dann weisst du wie deine angabe rüber kommt ;-). Genauere Details gibts erst dann wenns von dir details gibt. Wenns Confidential sein sollte, was ich eher bezweifle solltest du sowieso nicht ins Forum ;-) mfg Schoasch
Sorry. Aber genauere Details weis ich erst am Montag. Trotzdem danke für eure Antworten. mfg
So. Ich bekomme ein analoges Signal. Dieses Signal muss ich A-D wandeln. Wie stelle ich den ad wandler ein, dass er mir das Eingangssignal vom Pib_b5 ad wandelt. Danach muss ich den Pegel(gleich wie Amplitude) zwischen 0- 2,5V oder mehr messen und je nachdem muss ich dann mit einigen if schleifen und ouput befehlen an den pins b0-b2 high oder low ausgeben. Vielen Dank im Voraus. mfg
Also: Erstens gibt es keine "if-Schleifen" und zweitens hat der PIC18F4550 an Pin B5 keinen A/D-Wandler-Eingang. (Siehe Datenblatt) Wie hoch ist die Frequenz des Audiosignals, bzw. wie hoch ist die geforderte Abtastrate? Ich weiß jetzt nicht aus dem Stegreif, wie hoch die maximal mögliche Abtastrate mit dem PIC18F4550 ist (hängt ja auch von Deiner Taktrate ab), aber für ein Audiosignal dürfte es etwas mau sein... gruß daniel
Ich meine natürlich if-Anweisung. Geht am Port A5 auch. Die Frequenz beträgt max. 2,5kHz. Die Abtastrate soll sinnvoll gewählt werden. mfg
Erstmal: Pin RB5 geht garnicht, dieser Pin ist nicht an den A/D-Wandler angeschlossen. Ich nehm stattdessen Pin RA0 (==AN0). Dann etwa so:
1 | #include <adc.h> |
2 | |
3 | // ... dann in main, zum ADC-Initialisieren:
|
4 | void main() { |
5 | // Channel 0, Andere Parameter nach Bedarf
|
6 | adc_open(ADC_CHN_1, ADC_FOSC_xx, ...); |
7 | |
8 | // Grosse Schleife:
|
9 | while (1) { |
10 | // Messung starten:
|
11 | adc_conv(); |
12 | // Warten bis fertig:
|
13 | while (adc_busy()); |
14 | // Auslesen:
|
15 | ergebnis=adc_read(); |
16 | |
17 | // Hier natürlich DEINE Wunschwerte eintragen...
|
18 | if (ergebnis>123) |
19 | LATBbits.LATB0=1; |
20 | else
|
21 | LATBbits.LATB0=0; |
22 | |
23 | if (ergebnis>223) |
24 | LATBbits.LATB1=1; |
25 | else
|
26 | LATBbits.LATB1=0; |
27 | |
28 | // Ende while(1)
|
29 | }
|
30 | }
|
Danke erstmal. adc_conv nimmt mein compiler nicht. Ich verwende den CCS-C Compiler. mfg
Daniel P. wrote: > Ich weiß jetzt nicht aus dem Stegreif, wie hoch > die maximal mögliche Abtastrate mit dem PIC18F4550 ist (hängt ja auch > von Deiner Taktrate ab), aber für ein Audiosignal dürfte es etwas mau > sein... Die sollte für Audio noch reichen, wenn ich mich grad nicht verrechnet habe, könnte dieser PIC bei 48MHz Clock noch 62500 Samples/sec bei 10Bit Auflösung hinkriegen.
Jetzt habe ich den digitalen Wert. Wie kann ich jetzt den Pegel messen??
Elias Einetter wrote:
> Jetzt habe ich den digitalen Wert. Wie kann ich jetzt den Pegel messen??
Wenn du die guten Ratschläge weiter oben beachtet hast,
(->Spitzenwertgleichrichter) entspricht dein digitaler Wert bereits dem
Pegel.
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.