Digitální mikrometr
Zakoupen na AliExpressu .... https://www.aliexpress.com/item/32959663773.html?spm=a2g0s.9042311.0.0.27424c4dxklukL
Vzhledem k tomu že mikrometr měl konektor digitálního výstupu, a nechtělo se mi shánět, ani nijak řešit odnímatelné provedení. Vyvedl jsem to napřímo kablíkem s konektorem dle obrázku.
Data vycházející z mikrometru na osciloskopu.
Na snímcích je jasně vidět že červená stopa jsou hodiny a žlutá stopa data.
1. obrázek je vynulovaný displej mikrometru
2. obrázek je detail pro lepší rozpoznání
3. na displeji mikrometru je nějaký údaj.
Ještě ukázka z logického analizeru.
Na displeji mikrometru je 0
Na displeji mikrometru je 3.26
2+4+64+256 = 326
Pro připojení mikrometru k Arduinu jsem musel vyrobit zesilovače úrovní ... z mikrometru vystupuje LOG.1 v hodnotě cca. 1.5V
Arduino program - čtení hodnoty z mikrometru
// definice připojení
#define CLK_pin 2
#define Data_pin 3
uint8_t pocitadlo = 0;
uint32_t data_mikrometr;
void setup()
{
// nastavení vývodů
pinMode(CLK_pin, INPUT);
pinMode(Data_pin, INPUT);
Serial.begin(9600);
}
void loop()
{
if (digitalRead(CLK_pin) == 1) // pokud je CLK_pin == 1 pokračuj
{
// pocitadlo = 0; // vynuluj počítadlo bitu
while (pocitadlo <= 23)
// pokračuj v teto smyčce dokud bude hodnota "počítadlo" vyhovovat podmínce
{
while (digitalRead(CLK_pin) == 1)
{
// čekej dokud je CLK_pin == 1
}
if (digitalRead(Data_pin) == 0) // pokud jsou Data_pin == 0
{
data_mikrometr = (data_mikrometr | (1 << pocitadlo));
// posuň 1 o hodnotu "pocitadla" vlevo a pripočti k "data_mikrometr"
}
while (digitalRead(CLK_pin) == 0)
{
// čekej dokud je CLK_pin == 0
}
pocitadlo++; // zvětši hodnotu počitadlo o 1
}
Serial.println(data_mikrometr);
data_mikrometr = 0; // vynuluj naměřenou hodnotu
pocitadlo = 0; // vynuluj počítadlo bitů
}
}