Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.99 KB | None | 0 0
  1. #Alkoholsensor Messung
  2. # Version 2.3 mit Kommentaren
  3.  
  4. #Import von Funktionen (z.b. Sensor-Auslesefunktionen)
  5. import time
  6. import RPi.GPIO as GPIO
  7. from datetime import datetime
  8. from Adafruit_MCP3008 import MCP3008
  9.  
  10. # Setze Parameter für Sensor und Analog-Digital-Wandler MCP3008, cs=clockspeed
  11. GPIO.setmode(GPIO.BCM)
  12. mcp = MCP3008(clk=18, cs=25, miso=23, mosi=24)
  13.  
  14. # Lese Werte ein
  15. messname = input("Wie soll die Datei heißen?: ")
  16. messungenprosek = input("wie viele Messungen pro Sekunde sollen Erfolgen?: ")
  17. # Berechne Zeit zwischen den Messungen
  18. sleepzeit= 1/float(messungenprosek)
  19. # Erzeuge Dateinamen aus Messname, Zeit und Dateiendung (.csv)
  20. dateiname = messname+"_"+datetime.now().strftime("%Y%m%d_%H%M%S")+".csv"
  21. #Öffne Datei mit gewähltem Dateinamen (dateiname) im Erstell-Modus (x)
  22. # x erstellt die Datei wenn sie noch nicht vorhanden ist, sonst fehler
  23. with open(dateiname, 'x') as datei:
  24. # schreibe erste Zeile in Datei (Spaltenköpfe)
  25. datei.write("Zeit;Spannung;Messzeit\n")
  26. #schließe Datei wieder
  27. datei.close()
  28. #Setze hilfsvariable auf 0
  29. tstart=0
  30. # Versuche oder fange fehler (keyboard_interrupt) ab -> except (Exception)
  31. try:
  32. # Starte unendliche Schleife
  33. while True:
  34. # lese Daten vom Sensor ein
  35. daten = mcp.read_adc(0)
  36. # prüfe ob tstart = 0? -> Wenn ja, ist dies die erste Messung
  37. if tstart==0:
  38. #speichere aktuelel Zeit in tmessung
  39. tmessung= datetime.now()
  40. #setze tstart auf tmessung (aktuelle zeit)
  41. tstart=tmessung
  42. #definiere tmessung der ersten Messung als 0
  43. tmessung=0
  44. # wenn nicht (normalfall für alle weiteren Messungen)
  45. else:
  46. # berechne vergangene Zeit (in Sekunden) seit erster Messung
  47. tmessung=(datetime.now()-tstart).total_seconds()
  48. # Berechne Spannungswert aus Ausgabe von Analog-Digital-Wandler und normiere auf Volt
  49. # 1024 weil der ADW 10Bit auflösung hat 2^10 = 1024 mögliche werte
  50. # 5 weil die Werte zwischen 0 und maximal 5V liegen
  51. spannung = daten * 5.0/1024
  52.  
  53. #debug der Rohwerte vom ADW
  54. #print(str(daten))
  55. # gib Spannungswert auf der Konsole aus
  56. print("{:.3}V".format(spannung))
  57. # speichere die aktuelle Zeit in der variable zeit
  58. zeit = datetime.now()
  59. #öffne datei mit der option a (a steht für append also anhängen) nicht überschreiben
  60. with open(dateiname, 'a') as datei:
  61. # schreibe eine zeile mit aktueller Zeit, der gemessenen Spannung und tmessung
  62. datei.write(str(zeit)+";"+str(spannung)+";"+str(tmessung)+"\n")
  63. #leere internen Puffer und schreibe direkt in Datei
  64. datei.flush()
  65. #schließe Datei
  66. datei.close()
  67. #schlafe bis nächste Messung
  68. time.sleep(sleepzeit)
  69. # fange Keyboard interrupt ab und beende programm
  70. except KeyboardInterrupt:
  71. # gebe GPIO ports wieder frei
  72. GPIO.cleanup()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement