Ultralydtransmitter 0-5V

Praktisk oppkobling:

Her er en «oppskrift» på en ultralydsensor som kan levere status for avstand på seriemonitor pluss at den også leverer ut et spenningssignal fra 0-5V. Dette kan godt endres fra 1-5V hvis man ønsker det. Jeg testet den i måleområdet fra 0-2 meter, men i programkoden under så har jeg latt den måle fra 0-50 cm.

Som ultralydsensor, så brukte jeg denne sensoren av fabrikat Vellemann som jeg kjøpte hos Kjell og co (Pris kr 100,-):

Her er litt teknisk dokumentasjon fra Vellemann som ikke er 100% riktig:

Den beste beskrivelsen som utgangspunkt for dette prosjektet fant jeg på Arduino Project Hub:

Jeg fikk også bruk for map funksjonen som er dokumentert her:

Jeg endret triggerpin fra 13 til 4 og echopin fra 12 til 2.  Dessuten så føyde jeg til bruk av utgang 3 til spenningssignal 0-5V. Jeg modifiserte også programmet slik at det skriver ut en spenning på pinne 3, 0-5V som representerer avstand til objekt. Den modifiserte programkoden er listet under.

 

const unsigned int TRIG_PIN=4;
const unsigned int ECHO_PIN=2;
const unsigned int UTGANG=3;
const unsigned int BAUD_RATE=9600;

unsigned long pulstid;

int avstand = 0;
int spenning = 0;

void setup() {
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  Serial.begin(BAUD_RATE);
}

void loop() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
 
 pulstid = pulseIn(ECHO_PIN, HIGH);
 
 avstand = pulstid/29/2;
 
 if(pulstid==0){
   Serial.println("Ikke signal!");
   spenning = 1;
   analogWrite(UTGANG, spenning);
   } 
  else{
      Serial.print("Avst: ");
      Serial.print(avstand);
      Serial.println(" cm");

      // 0V nærmest 5V 50cm avstand. Ved avstandsmåling.
      // spenning = map(avstand, 1, 50, 1, 254);

      // 5V naermest 0V 50cm avstand. 
      // Ved nivåregulering der sensor peker ned mot overflaten.
      // Når prosessverdien øker så
      spenning = map(avstand, 50, 1, 1, 254);
      
      analogWrite(UTGANG, spenning);
  }
   
   // delay i sløyfen er satt til 1 sek pga seriemonitor. 
   // Settes til 0.1 = 100 ms ved bruk for intrumentering. 
   delay(1000);

 }

Slik som programkoden er skrevet så er forutsetningen at ultralydtransmitter står øverst i en tank med høyde 50cm. Når tanken er tom så får man ut 0V fra transmitteren. Når tanken er full så får man ut 5V fra transmitteren. Hvis man heller vil måle avstand så kan dette oppnås gjennom en liten endring av programmet. (Ved å ta i bruk en programlinje som er kommentert ut.)