Automatisk titrering maskin (4 / 5 steg)
Steg 4: kod
Jag använde demonstrationen koden från Atlas vetenskapliga för pH-circuit, eftersom det fungerar bra. Det är viktigt att notera att du behöver experimentellt validera din pump. Därefter kan koppla ena änden av din pump till en behållare med vatten och den andra änden till en graderad cylinder. Berätta för pumpen att köra för 4000 steg och record volymen i excel. Gör detta minst 3 gånger, men mer spår, desto mer exakt din pump. När du är nöjd med din kör, genomsnitt alla dina tabellerade volymer, och dividerar det med 4000. Detta är volymen av ett enda steg av din motor.
Av: Kahveh Saramout - kemiingenjör, Cand
12/10/2015
pH-kod har bidragit med atlas vetenskapliga
MakeCourse - University of South Florida
#include //we måste innehålla SoftwareSerial biblioteket, annars vi kan inte använda den.
#define rx 4 //define vilken pin rx kommer att bli.
#define tx 5 //define vilken pin tx kommer att bli.
SoftwareSerial myserial (rx, tx);
definiera hur den mjuka seriella porten kommer att fungera.
int dirPin2 = 6;
int steppin2 = 7.
int dirpin = 1;
int steppin = 9.
int prep = 8.
int x = 1;
int y = 0;
flyta vol_step = 0.205;
String inputstring = ""; en sträng att lagra inkommande data från datorn
String sensorstring = ""; en sträng att hålla data från Atlas vetenskapliga produkten
booleska input_stringcomplete = false; Vi har fått alla data från datorn
booleska sensor_stringcomplete = false //have vi fått alla data från Atlas vetenskapliga produkten
float ph. används för att hålla ett flytande punkt nummer som är pH-värdet.
void setup()
{
Serial.BEGIN(9600); Ange baudvärde för hårdvara följetong port_0 till 9600
myserial.BEGIN(9600); Ange baudvärde för mjukvaran följetong port_3 till 9600
inputstring.Reserve(10); avsätta vissa byte för att ta emot data från datorn
sensorstring.Reserve(30); avsätta vissa byte för att ta emot data från Atlas vetenskapliga produkt
pinMode (dirpin, produktionen);
pinMode (steppin, OUTPUT);
pinMode (prep, indata);
pinMode (dirPin2, produktionen);
pinMode (steppin2, produktionen);
}
void serialEvent() {//if hårdvara följetong port_0 mottar en char
char inchar = (char)Serial.read(); få röding vi just fått
inputstring += inchar; lägga till inputString
om (inchar == '\r') {
input_stringcomplete = sant; om det inkommande tecknet är en, uppsättning flagg
}
}
void loop()
{
om (x < = 1) {
Serial.println(y);
långa j;
för (j = 0; j < 8360; j ++) / / iterera för 8360 microsteps.
{
digitalWrite (dirPin2, hög);
digitalWrite (steppin2, låg); Detta låg till hög förändring är det som skapar den
digitalWrite (steppin2, hög); "Stigande kanten" så easydriver vet att när man ska kliva.
delayMicroseconds(150); Denna fördröjning är nära toppfart för detta
}y++;}
om (input_stringcomplete) {//if en sträng från datorn har tagits emot i sin helhet
myserial.Print(inputstring); skicka denna sträng till Atlas vetenskapliga produkten
inputstring = ""; Rensa strängen
input_stringcomplete = false; återställa flaggan brukade berätta om vi har fått en färdig sträng från PC
}
om (myserial.available() > 0) {//if ser vi att Atlas vetenskapliga produkten har skickat en karaktär.
char inchar = (char)myserial.read(); få röding vi just fått
sensorstring += inchar;
om (inchar == '\r') {
sensor_stringcomplete = sant; om det inkommande tecknet är en, uppsättning flagg
}
}
om (sensor_stringcomplete) {//if en sträng från Atlas vetenskapliga produkt har tagits emot i sin helhet
Serial.println ("pH:");
Serial.println(sensorstring); Skicka strängen till den seriella datorskärm
pH = sensorstring.toFloat();
Serial.println (ph); //convert strängen till ett flytande punkt nummer så det kan utvärderas av Arduino
länge i.
för (jag = 0; jag < 1928; i ++) / / iterera för 1928 microsteps.
{
digitalWrite (steppin, låg); Detta låg till hög förändring är det som skapar den
digitalWrite (steppin, högt); "Stigande kanten" så easydriver vet att när man ska kliva.
delayMicroseconds(200); Denna fördröjning är nära toppfart för detta
}
Delay(1000); / / särskild motor. Något snabbare motorn spiltor.
x ++;
Serial.println ("antal cykler:");
Serial.println(x); skriver ut 3 cykler
Serial.println ("volym:");
Serial.println(vol_step*x); beräknar vår totala volym
om (ph < = 6.999) {//if pH-värdet är mindre än eller lika med 6.999
Serial.println("Low"); Print "låg" Detta visar att Arduino utvärderar pH som ett tal och inte som en sträng
}
Serial.println ("---");
sensorstring = ""; Rensa strängen:
sensor_stringcomplete = false; återställa flaggan brukade berätta om vi har fått en färdig sträng från Atlas vetenskapliga produkten
}
om (x > = 60) {/ / 60 cykler och vi är klara! detta är hur vi avsluta.
långa k;
för (k = 0; k < 50370; k ++) / / iterera för 50370 microsteps.
{
digitalWrite (dirPin2, låg);
digitalWrite (steppin2, låg); Detta låg till hög förändring är det som skapar den
digitalWrite (steppin2, hög); "Stigande kanten" så easydriver vet att när man ska kliva.
delayMicroseconds(150); Denna fördröjning är nära toppfart för detta
}
medan (x > = 60) {
Gör ingenting
};}