драйвер для АЦП HX711
Код: Выделить всё
component hx711 "Interface";
description """Crude Interface. Reads analog data from HX711.""";
pin out bit SCK "SCK pin out";
pin in bit DT "DT input";
pin out float output "output value";
pin in bit enable "Enable pin";
pin in bit reset "Reset pin (set channel A Gain 128)" ;
pin in bit select "select channel 0=ch.A gain 128, 1=ch.B gain 32";
function _ nofp;
license "GPLv2 or greater";
author "MK";
variable int ByteState = 0;
variable int BitState = 0;
variable int bnum = 0;
variable u32 TXByte;
variable int oldDT;
variable int waitcount = 0;
variable int chselect;
;;
enum Byte_state
{
eIdle = 0,
eWait = 1,
eRead = 2,
eReset = 3
};
enum Bit_State
{
eIdleBit = 0,
eSCKLow = 1,
eSCKHigh = 2,
eResetBit = 3
};
FUNCTION(_)
{
if (enable) {
if (reset){
ByteState = eReset;
}
chselect = (select==1) ? 26 : 25;
// bytes
switch (ByteState) {
case eReset :
BitState = eResetBit;
break;
case eIdle :
BitState = eIdleBit;
if (!DT && oldDT){
ByteState = eRead;
BitState = eSCKHigh;
bnum = 0;
TXByte = 0;
}
break;
case eRead :
if (BitState == eSCKHigh) {
if (bnum < 24){
TXByte = (DT==1) ? (1 | TXByte << 1) : (TXByte << 1);
}
bnum++;
}
if (bnum == chselect){
output = TXByte;
bnum = 0;
ByteState = eIdle;
BitState = eIdleBit;
}
break;
default :
ByteState = eIdle;
}
// bits
switch (BitState) {
case eResetBit :
SCK=1;
waitcount++;
if (waitcount>=100) {
waitcount = 0;
BitState = eIdleBit;
ByteState = eIdle;
}
break;
case eIdleBit:
SCK = 0;
break;
case eSCKLow :
SCK = 1;
BitState = eSCKHigh;
break;
case eSCKHigh :
SCK = 0;
BitState = eSCKLow;
break;
default :
BitState = eIdleBit;
break;
}
}
oldDT = DT;
}
Код: Выделить всё
Описание:
- Два выбираемых дифференциальных входа
- Программируемый коэффициент усиления 64,128 (канал А) и фиксированный 32 (канал Б)
- Автоматический сброс при включении питания
- Выбор скорости передачи данных 10 Гц или 80 Гц
HX711 предназначен для датчика высокой точности 24 бит A / D. По сравнению с другими аналогичными чипами, данный имеет интегрированный генератор тактовой частоты и блок питания.
Благодаря высокой интеграции обеспечивается быстрый отклик и исключаются взаимные помехи.
Легкость программирования: использует всего 2 любых входа/выхода
Дифференциальное входное напряжение ±20мВ (при питании 5 В и усилении 128)
Напряжение питания: 2.6-5.5V DC
Есть библиотеки под Arduino и Raspberry pi.
https://github.com/bogde/HX711
https://github.com/ggurov/hx711
Характеристики:
- Разрешающая способность: 24 бит
- Напряжение питания:3-5V