利用Arduino开发板连接弯曲传感器的方法-下

电子说

1.3w人已加入

描述

Arduino代码

以下是一个简单的草图,该草图从Arduino的ADC引脚中读取传感器数据,并在串口显示器上打印输出。对于大多数项目,可以满足多数需求。

// Change these constants according to your project's design
const float VCC = 5;                        // voltage at Ardunio 5V line
const float R_DIV = 47000.0;        // resistor used to create a voltage divider
const float flatResistance = 25000.0;        // resistance when flat
const float bendResistance = 100000.0;        // resistance at 90 deg


void setup() {
        Serial.begin(9600);
        pinMode(flexPin, INPUT);
}


void loop() {
        // Read the ADC, and calculate voltage and resistance from it
        int ADCflex = analogRead(flexPin);
        float Vflex = ADCflex * VCC / 1023.0;
        float Rflex = R_DIV * (VCC / Vflex - 1.0);
        Serial.println("Resistance: " + String(Rflex) + " ohms");


        // Use the calculated resistance to estimate the sensor's bend angle:
        float angle = map(Rflex, flatResistance, bendResistance, 0, 90.0);
        Serial.println("Bend: " + String(angle) + " degrees");
        Serial.println();


        delay(500);
}

如果一切工作正常,则在折弯弯曲传感器时,您应该看到电阻的变化和估算的角度。

显示器

代码说明

首先在草图中定义弯曲传感器和下拉电阻连接的Arduino引脚编号。

const int flexPin = A0;

接下来,定义了几个常数:VCC是系统电压,R_DIV是用于创建分压器的阻值,flatResistancebendResistance是弯曲传感器在水平和90°弯曲时的阻值。确保您准确设置这些常数。

const float VCC = 5;
const float R_DIV = 47000.0;
const float flatResistance = 25000.0;
const float bendResistance = 100000.0;

在setup()函数中,我们将初始化串口通信,并将A0引脚设置为输入。

void setup() {
        Serial.begin(9600);
        pinMode(flexPin, INPUT);
}

loop() 函数中,我们首先进行ADC读数。

int ADCflex = analogRead(flexPin);

当Arduino将此模拟电压转换为数字量时,它实际上将其转换为范围为0到1022的10位数量。因此,为了计算实际输出电压,我们使用以下公式:

float Vflex = ADCflex * VCC / 1023.0;

接下来,我们使用分压公式计算弯曲传感器的电阻,并将其显示在串口显示器上。

float Rflex = R_DIV * (VCC / Vflex - 1.0);
Serial.println("Resistance: " + String(Rflex) + " ohms");

最后,我们使用计算出的阻值来估算传感器的弯曲角度。为此,我们使用IDE的内置map()函数。

map()函数映射并将传感器的阻值转换为传感器的弯曲角度。因此,当我们调用*map(Rflex, flatResistance, bendResistance, 0, 90.0)*时,flatResistance值将映射到0°,bendResistance将映射到90°。

float angle = map(Rflex, flatResistance, bendResistance, 0, 90.0);
Serial.println("Bend: " + String(angle) + " degrees");
Serial.println();
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分