Hôm nay mình sẽ giới thiệu Lập trình ADC Với Arduino STM32
ADC Arduino AVR là 10bit tương ứng 2^10=1024 giá trị MAX
ADC Arduino STM32F1 và F4 là 12 bit 2^12=4096 giá trị MAX
ADC Arduino STM32H7 là 16 bit 2^16=65535 giá trị MAX
Công thức Tính Volt
pinMode(PA0,INPUT_ANALOG);
Với giá trị ADC 12 bit
float volt = 3.3 * analogRead(PA0)/4096;// VREF = 3.3v
Với giá trị ADC 16bit
float volt = 3.3 * analogRead(PA0)/65535;// VREF = 3.3v
Chú ý muốn chính xác VREF Chính xác Khuyến cáo dùng Mã LD1117 3V3 Của ST
Nếu các bạn muốn đọc giá trị Lớn Hơn 3.3V thì nối điện trở phân áp .
Công thức Ur=Uv*R2(R1+R2)
Nếu cần chính xác nên dùng điện trở 1% hoặc 0.1%
Công thức Phân áp Ur=Uv*10k/(10k+30k)->Ur=Uv*0.25
VD với Uv =10V ->Ur=10*0.25=2.5V
Đến lập trình Arduino STM32
Sơ đồ ADC STM32F103C8T6
pinMode(PA0,INPUT_ANALOG); //Khai báo chân Làm đầu vào ADC
Hàm đọc Analog
float volt = vref * analogRead(PA0)/4096;//
Code mẫu :
http://www.arduino.cc/en/Tutorial/AnalogReadSerial
*/
#define AD0 PA0
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
pinMode(AD0,INPUT_ANALOG);
}
// the loop routine runs over and over again forever:
void loop() {
// read the input on analog pin 0:
int sensorValue = analogRead(AD0);
// print out the value you read:
Serial.println(sensorValue);
delay(1); // delay in between reads for stability
}