- Labornetzteil AliExpress         
Seite 4 von 6 ErsteErste ... 23456 LetzteLetzte
Ergebnis 31 bis 40 von 52

Thema: 40 Khz Frequenz erzeugen Ultraschallsender

  1. #31
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    35
    Beiträge
    718
    Anzeige

    Praxistest und DIY Projekte
    Oky mach ich auch so, ich bin gerade dabei die Spannungen einzulesen und in einem Array zu speichern.

    Mal gucken ob der ADC vom M8 schnell genug ist, alternativ hätte ich noch ein I²C baustein hier
    RGB-IR-Lampe, Catwiesel Bot, PC Terminal, Schrittmotoransteuerung, Elektroschocker, Stundenplan... www.stefan-reible.de

  2. #32
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    Ja dann viel Erfolg,
    was hast Du weiter vor ?
    mit ADC messen, bis der Schall zurückkommt ?
    Gleichzeitig mit einem Timer die Zeit messen ?
    Hm ich kann mir das jetzt schlecht vorstellen, leider hab ich bis jetzt nichts mit US Messung gemacht
    Vielleicht hilft ein Blick zum Asuro rüber, wie man das dort Softwaretechnisch
    gelöst hat...
    Perfekt wäre eine Funktion, die einem die Zeit zurückgibt, die der Schall gebraucht hat oder -1 wenn freie Sicht herscht
    Berichte auf jedem Fall weiter...

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  3. #33
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    35
    Beiträge
    718
    Ich hab grad ein Programm geschrieben das 400 AD Werte einließt und dann über RS232 zurück gibt.
    http://rafb.net/p/oTBH1n30.html

    Nur grad ist mir aufgefallen das meien Schaltung garkeine analoge Spannung liefert, sondern ein schwellwert Schalter ist

    Das heißt ich muss die Zeit zwischen senden des Impulses und anstieg der Flanke mit nem Timer messen, und dann umrechnen s = 0,5*v*t.

    Ist allerdings nicht so einfach die OPV sauber einzustellen.
    Naja ich werd morgen mal weiter coden.
    RGB-IR-Lampe, Catwiesel Bot, PC Terminal, Schrittmotoransteuerung, Elektroschocker, Stundenplan... www.stefan-reible.de

  4. #34
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    Aha,
    Ich muß Dich aber berichtigen, Der Assembler Code verwendet den Timer 2, Timer 0 hat keine Hardwareverbindung an irgendwelchen Pin...
    Es ist also damit zu rechnen, daß irgendwann eine High(oder auch LOW) Flanke von Deinem US Empfenger kommt, und Du möchtest die Zeit zwischen Senden Ende und Flanke messen ?

    Dazu hätte ich eine Idee, leider kann ich keine genauen Infos dazu liefern, weil ich mich damit noch nicht auseinander gesetzt habe, aber der Timer 1 hat einen schönen Eingang am Pin PB0(ICP1) und der ganze Quatsch hat was mit der Input Capture Unit zu tun.
    Ich hab es eben überflogen(Dattenblatt M8 Seite 81), und es scheint so als wenn man den Timer 1 auf Null setzen könnte, sich zurücklehnt und in alle Ruhe auf den Inputcapture Interrupt warten könnte(eben Flankenwechsel an PB0).
    In der ISR den Wert auslesen, und schon hat man die Laufzeit...

    Schau mal in der Bascom Hilfe nach, vielleicht gibt es da schon was fertiges, damit würdest Du Dir den ADC Quatsch sparen....

    Nur so als Vorschlag...

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  5. #35
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    35
    Beiträge
    718
    Danke, hatte mich verschrieben.

    In Bascom kann man ganz einfach ein Interrupt auf steigende oder fallende Flanken einstellen. An den Interrupt Ports.

    Im Prinzip bräuchte ich 2 Interrupts.
    Einmal einen für ein Timer, der beispielsweise jede µS eine Variable hochzählt, und den Interrupt bei steigender Flanke von den Operationsverstärker, der den Timer wieder deaktiviert.

    Dann ist die Variable die Signallaufzeit in µS.

    Das Problem wäre:
    1. Muss ich den Timer so einstellen das er genau eine µS lang braucht, oder hast einen sonstigen Wert der bekannt ist.
    2. Ich hätte 2 Interrups laufen, ich weiß nicht ob das so gut ist.
    RGB-IR-Lampe, Catwiesel Bot, PC Terminal, Schrittmotoransteuerung, Elektroschocker, Stundenplan... www.stefan-reible.de

  6. #36
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    Ich weiß nicht, welche Laufzeiten zu erwarten sind, welche Entfernungen relevant sind ?
    Du mußt ja keinen Meter messen, oder ?
    Wie lange braucht der Schall bei z.B. 10 cm, so als Richtwert ?(Ich habe keine Lust nachzurechnen...)
    Ein Takt bei 16 Mhz dauert 62,5 ns bei Timer 1 mit prescaller 1 hättest Du theoretisch den Bereich 62.5ns - 4ms wenn man die Timerüberläufe mitzählt entsprechend mehr.
    Timer auf genau 1µs zu stellen ist genauso einfach/schwer wie 40kHz Takt zu erzeugen
    Dein Ansatz mit dem µs Tick und warten, bis externer Interrupt kommt ist sicher richtig und Wert ausprobiert zu werden, ich habe die Input Capture Geschichte zur Sprache gebracht, weil es mir sehr ellegant erscheint, und auch saugenau, weil man bis auf ein Takt genau messen könnte (jaja Theorie und Praxis).
    Und warum sollen 2 Interrupts nicht gut sein ?
    Im Notfall kanst Du auch den Interruptflag pollen, ohne Interrupt auszulösen, aber mach es erstmal nach Deiner Nase, bin mal gespannt, was dabei rauskommt.

    Gruß Sebastian

    P.S.
    Ich merke es gerade, wo Dein Problem mit 1µS ist, man hat genau 16 Takte Zeit um alles abzuarbeiten, also vergiß Interrupt, das dauert zu lange, da bietet sich eher Timer 2 mit prescaller 1 und OCR2 = 16 in CTC Mode, damit man keine Zeit mit Vorladen verliert und den Comparematch Flag pollen um
    eine Variable hochzuzählen, das würd gehen, ist aber wirklich kritisch...
    Software is like s e x: its better when its free.
    Linus Torvald

  7. #37
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    35
    Beiträge
    718
    Es sind Entfernungen von 20cm bis ca 3m relevant.

    Zur Signallaufzeit, das steht alles auf der Seite woher ich auch den Schaltplan hab:
    http://www.mikrocontroller.net/artic...it_Ultraschall
    Ich hab Variante 2 (ganz unten).
    Wenn ich 2 Interrupts hab, wovon einer alle 1 µS ein Overflow hat, ich glaub was wird was kritisch, aber ka.

    Wie meinst du das mit Timer 2 eine Variable hochzählen ohne Interrupt?
    Timer2 = Timer, Prescaller = 1 , Compare = Clear , Incr I
    OCR2 = 16

    Das geht so nicht, also die Incr I da reinpacken.
    Ich verseh auch nicht was du mit "Comparematch Flag pollen um
    eine Variable hochzuzählen" meinst
    RGB-IR-Lampe, Catwiesel Bot, PC Terminal, Schrittmotoransteuerung, Elektroschocker, Stundenplan... www.stefan-reible.de

  8. #38
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    Wenn ich 2 Interrupts hab, wovon einer alle 1 µS ein Overflow hat, ich glaub was wird was kritisch, aber ka.
    Das kannst Du vergessen, wie ich schon oben geschrieben habe bekommt man alle 16 Takte einen Interrupt und ich behaupte mal es ist nicht machtbar, da mitzukommen.
    Dafür kann man den Interruptflag pollen, aber wenn Du nicht weiß wovon ich rede, lasse ich das lieber.
    Hast Du wegen Capture Unit geguckt ?
    Ich habe es ausprobiert, und muß sagen es ist erste Sahne.
    Man setzt den Timer1 auf Null und wartet auf eine Flanke auf dem IC1 Pin.
    Wenn Die kommt wird Captureinterrupt ausgelöst, wo man sich den Wert einfach holt und fertig.
    Ich sag mal Timer1 mit Vorteiler 8 ergibt einen Tick von 500 ns damit kannst Du Laufzeiten zwischen 500 ns und etwas über 32 ms messen, mit Auswertung des Überlaufs natürlich mehr.
    Nur wie man das im Basic macht, mußt Du schonmal selber rausfinden, ich kann Dir höchstens sagen welche Register, wie einzustellen sind.

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  9. #39
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    35
    Beiträge
    718
    Sorry ich find nichts dazu, ich muss allerdings auch sagen das ich mit Dial-up Speed surfe (schon seit eienr Woche) da Net Cologne einfach nichts auf die Reihe bekommt.
    Ich lad teilweise 1 min für google das ist echt zu kot*** naja...

    Kann ich dein ASM Code nicht einfach in Basic reinklatschen?

    Ich lad aber grade nochmal das DB herunter, in 15min hab ichs -.-
    RGB-IR-Lampe, Catwiesel Bot, PC Terminal, Schrittmotoransteuerung, Elektroschocker, Stundenplan... www.stefan-reible.de

  10. #40
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    35
    Beiträge
    718
    So nachdem ich mir die Bascom Hilfe nochmal durchgelesen hab hab ich es doch gefunden:

    CAPTURE EDGE = FALLING/RISING

    Das war das was ich weiter oben im Thread meinte.

    Also folgendes soll ja passieren:

    -Frequenz starten (geht)
    -2µS warten (geht)
    -Frequenz stoppen (geht)
    -Timer1 starten (enable timer1?)
    -auf steigende Flanke warten (Capture Edge = Rising)
    -Durchgänge in eine Variable schreiben (woher soll ich wissen wie oft der jetzt durchlief?)
    RGB-IR-Lampe, Catwiesel Bot, PC Terminal, Schrittmotoransteuerung, Elektroschocker, Stundenplan... www.stefan-reible.de

Seite 4 von 6 ErsteErste ... 23456 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests