mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC 18f4550. Amplitudenmessung


Autor: Abc E. (xeinettel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!! Ich hätte eine Frage: Könnte mir jemand erklären wie ich eine 
Amplitudenmessung mit dem PIC 18f4550 realisieren kann. mfg

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Abc E. (xeinettel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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"

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stichwort: Spitzenwertgleichrichter

z.B. sowas...
http://www.loetstelle.net/grundlagen/operationsver...

Autor: Abc E. (xeinettel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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 :(

Autor: Schoaschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: xeinettel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry. Aber genauere Details weis ich erst am Montag. Trotzdem danke für 
eure Antworten. mfg

Autor: Abc E. (xeinettel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Daniel P. (ppowers)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Abc E. (xeinettel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal: Pin RB5 geht garnicht, dieser Pin ist nicht an den A/D-Wandler 
angeschlossen. Ich nehm stattdessen Pin RA0 (==AN0).

Dann etwa so:
#include <adc.h>

// ... dann in main, zum ADC-Initialisieren:
void main() {
// Channel 0, Andere Parameter nach Bedarf
adc_open(ADC_CHN_1, ADC_FOSC_xx, ...);

// Grosse Schleife:
while (1) {
// Messung starten:
adc_conv();
// Warten bis fertig:
while (adc_busy());
// Auslesen:
ergebnis=adc_read();

// Hier natürlich DEINE Wunschwerte eintragen...
if (ergebnis>123) 
  LATBbits.LATB0=1;
else 
  LATBbits.LATB0=0;

if (ergebnis>223) 
  LATBbits.LATB1=1;
else 
  LATBbits.LATB1=0;

// Ende while(1)
}
}

Autor: Abc E. (xeinettel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke erstmal. adc_conv nimmt mein compiler nicht. Ich verwende den 
CCS-C Compiler.

mfg

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Abc E. (xeinettel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt habe ich den digitalen Wert. Wie kann ich jetzt den Pegel messen??

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.