STM32L010と内蔵ADCで電圧をシリアルに出力 3.300Vまで (ソフトウェアシリアル)(Keil)
x Mbed2
目的
主にNJL7502L等の微小な電圧を測る。
説明
adcの値(4096)に6600掛けて8192で割ると3300にピッタリなる。
//SER_V3300_1
//電圧
#include "mbed.h"
//10の割り算 0から1028までは、正しい。主に0から999
#define DVI10(n) ((n*205)>>11)
char ch_hex_a_b[16];
char *ch_hex_a(int x)
{
int x_bk;
//x=1234;//debug
ch_hex_a_b[4] = 0;
if ( x >= 9000 ) { x = x - 9000; ch_hex_a_b[0] = '9'; }
else if( x >= 8000 ) { x = x - 8000; ch_hex_a_b[0] = '8'; }
else if( x >= 7000 ) { x = x - 7000; ch_hex_a_b[0] = '7'; }
else if( x >= 6000 ) { x = x - 6000; ch_hex_a_b[0] = '6'; }
else if( x >= 5000 ) { x = x - 5000; ch_hex_a_b[0] = '5'; }
else if( x >= 4000 ) { x = x - 4000; ch_hex_a_b[0] = '4'; }
else if( x >= 3000 ) { x = x - 3000; ch_hex_a_b[0] = '3'; }
else if( x >= 2000 ) { x = x - 2000; ch_hex_a_b[0] = '2'; }
else if( x >= 1000 ) { x = x - 1000; ch_hex_a_b[0] = '1'; }
else { ch_hex_a_b[0] = '0'; }
x_bk = x;
x = DVI10(x); // 12 <- 123 / 10
ch_hex_a_b[3] = '0' + ( x_bk - (x*10) ); // 3 <- 120 - 123
x_bk = x;
x = DVI10(x); // 1 <- 12 / 10
ch_hex_a_b[2] = '0' + ( x_bk - (x*10) ); // 2 <- 12 - 10
ch_hex_a_b[1] = '0' + x;
return(ch_hex_a_b);
} //ch_hex_a
//アナログ入力の設定
AnalogIn adc_vbat(A3); //PA_4
#define UART_DELAY 101 // 1/9600 98-105
DigitalOut TX(PA_2);
//仮想シリアルへの一文字出力 9600bps
int pc_putc(char ch)
{
TX=1;
TX=0;//Start
wait_us(UART_DELAY);
for(int ii=0; ii<8; ii++) { //Data x 8
TX=(ch>>ii)&1;
wait_us(UART_DELAY);
}; //for
TX=1;//Stop
wait_us(UART_DELAY);
return(0);
} //pc_putc
//文字列の表示 nana_seg
int pc_printf(char *str1) {
//文字の中身がゼロか
while(*str1){
//一文字出力
pc_putc(*str1 ++);
} //while
//戻り値
return(0);
}//ns_printf
//メイン関数
int main() {
int s; //ADCの値
//int n0; //温度 小数点以上
//無限ループ
while(1) {
//adcの読み込み 0から4096
s = (adc_vbat.read_u16()>>4);
//s=2048;
//電圧に変換 ex 3.300 -> 3300 mVを出力
s=(s*6600)>>13;
//電圧の小数点以下の表示
pc_printf( ch_hex_a(s) );
//リターン
pc_printf( "\r\n" );
//1秒の待ち
wait_ms(1000);
} //while
} //main
//容量削減
void error(const char* format, ...){}
Author And Source
この問題について(STM32L010と内蔵ADCで電圧をシリアルに出力 3.300Vまで (ソフトウェアシリアル)(Keil)), 我々は、より多くの情報をここで見つけました https://qiita.com/caa45040/items/0bfcec7f990cb3f341e0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .