Je travaille sur un projet qui utilise un capteur telemetrique "optoNCDT1320".
J'aimerais pouvoir connecter ce capteur a une carte Arduino pour relever les donnees correspondant a la distance.
Cependant je ne comprends pas comment relier le Rx+, Rx-, Tx+ et Tx- a la carte Arduino.
Le seul bout de code que j'ai ressemble a ca
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10,11); // RX, TX
void setup() {
Serial.begin(115200);
while (!Serial) {
Serial.println("Port Connected");
}
mySerial.begin(115200);
mySerial.println("Hello");
}
void loop() { // run over and over
// mySerial.listen();
// while there is data coming in, read it
// and send to the hardware serial port:
while (mySerial.available() > 0) {
Serial.println("Data from port :");
char inByte = mySerial.read();
Serial.write(inByte);
Serial.println(inByte);
Serial.println("OK");
}
}
Bonsoir
la doc p 29 indique que la connection est à faire en RS422 (d'où les Rx+, Rx-, Tx+ et Tx-)
Chercher une carte d'adaptation RS422/Arduino ici par exemple chez Electrodragon, mais on, en trouve aussi ailleurs
J'ai finalement utilise une droche de mon capteur qui delivre un courant de 4mA a 20mA en fonction de la distance. J'ai donc relie cette sortie avec une resistance de 250 ohm pour avoir une tension de 0-5V en sortie pour pouvoir lire cette donnee sur la broche analogique de la carte arduino.
Cependant les valeur que m'affiche le termial ne represente occunement la distance lu par le capteur et je ne comprends pas pourquoi. Pouvez vous m'aider ?
Voici le code utilise :
/*
* Programmation du capteur optoNCDT 1320 de Micro Epsilon avec la broche
* blanche qui delivre un courrant de 4mA a 20mA
*/
const double analogOutPin = A0;
double outputValue = 0;
float VoltValue = 0;
float distance = 0;
unsigned long DELAY_TIME = 10000; // 10 sec
unsigned long delayStart = 0; // the time the delay started
bool delayRunning = false; // true if still waiting for delay to finish
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
// start delay
delayStart = millis();
delayRunning = true;
}
void loop() {
// put your main code here, to run repeatedly:
outputValue = analogRead(analogOutPin);
// print the results to the Serial Monitor:
Serial.print("Value = ");
Serial.println(outputValue);
//Convertion data to distance
VoltValue = ((outputValue*5)/1024); // Volt
// Serial.println(VoltValue);
distance = ((VoltValue*100)/5); // Distance en mm
//Serial.println(distance);
Serial.println();
// check if delay has timed out
if (delayRunning && ((millis() - delayStart) >= DELAY_TIME)) {
delayRunning = false; // finished delay -- single shot, once only
//while(1);
}
}
[code/]