Arduino Örnek alma

Katılım
29 Kas 2008
Mesajlar
22
Puanları
1
Yaş
39
Merhaba arkadaşlar analog bir sinyal üzerinden istediğim bölümünden 10 us luk bir kaç örnek almak istiyorum bunu arduinoda nasıl yapabilirim
 
Merhaba arkadaşlar analog bir sinyal üzerinden istediğim bölümünden 10 us luk bir kaç örnek almak istiyorum bunu arduinoda nasıl yapabilirim

Alamazsın. Atmega işlemcisinin minimum çevirme hızı 100us dir. 10us lik bir örnekleme yapamaz.

On ATmega based boards (UNO, Nano, Mini, Mega), it takes about 100 microseconds (0.0001 s) to read an analog input, so the maximum reading rate is about 10,000 times a second.

https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/
 
Alamazsın. Atmega işlemcisinin minimum çevirme hızı 100us dir. 10us lik bir örnekleme yapamaz.



https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/
Sorumu soyle duzelteyim mesela bir bobine pulse gonderiyoruz pulse sinyalini kestigimizde bobin uzerinde zit emk olusuyor bu emk atiyorum 50 us ta sonumleniyor yani 0v a geliyor ben bu sonumlenmenin 40.us taki voltaji okumak istiyorum mesela bir volt adc karsiligi atiyorum200 se ben bunu anlik olarak okumak istiyorum
 
Atmega çiplerde okuma işlemini motor durduğu anda başlatsan bile 100mikrosaniye sonra cevap alırsın. 40us bulmak zor. Stm32 kullanırsan şansın artacaktır. 1us örnekleme hızı var sanırım. Harici kesmeyle motorun durduğu anı farkedip 39us sayıp örneklemeye başlaması gerekir. Lakin hiçbir çip sana birebir 40us değerini vermez. Osiloskopla kalibre etmelisin.
 
Atmega çiplerde okuma işlemini motor durduğu anda başlatsan bile 100mikrosaniye sonra cevap alırsın. 40us bulmak zor. Stm32 kullanırsan şansın artacaktır. 1us örnekleme hızı var sanırım. Harici kesmeyle motorun durduğu anı farkedip 39us sayıp örneklemeye başlaması gerekir. Lakin hiçbir çip sana birebir 40us değerini vermez. Osiloskopla kalibre etmelisin.
Anladim tesekkur ederim peki adc yi bir kere okumak icin hangi komutu kullaniyoruz analogRead komutuyla giriste degisken sinyali surekli okuyorum tek seferlik okumak istiyorum yani bi kere okuyup onu bi degiskene kaydetmek istiyorum sonra o degeri baska bi degerle karsilastiricam
 
Anladim tesekkur ederim peki adc yi bir kere okumak icin hangi komutu kullaniyoruz analogRead komutuyla giriste degisken sinyali surekli okuyorum tek seferlik okumak istiyorum yani bi kere okuyup onu bi degiskene kaydetmek istiyorum sonra o degeri baska bi degerle karsilastiricam
Sürekli okumanın sebebi loop içerisinde kullanman, aşağıdaki gibi harici kesmeye bağlaman gerekiyor ki sadece motor durduğunda okusun.

C++:
const uint8_t motorPin = 2;
const uint8_t adcPin = A0;
volatile uint16_t adc_degeri;

void setup() {
  pinMode(interruptPin,INPUT);
  attachInterrupt(digitalPinToInterrupt(interruptPin),kesmeFonk,FALLING);
}

void loop() {

}

void kesmeFonk() {
  adc_degeri = analogRead(adcPin);
}
 
ADC pininin onune sample/hold ya da trace/hold devresi koyarsin.

Bobini enerjilersin. Enerjisini kesersin ve 40 uS sonra hold sinyali uretirsin. Bu esnada bobindeki emknin degeri analog olarak saklanmis olur. Daha sonra da bu degeri ADC ile olcersin.

Fakat zamanlamasi kritik islemler icin gerekirse low level kodlama yapman gerekir.

Altin arayacaksin galiba.
 
Sürekli okumanın sebebi loop içerisinde kullanman, aşağıdaki gibi harici kesmeye bağlaman gerekiyor ki sadece motor durduğunda okusun.

C++:
const uint8_t motorPin = 2;
const uint8_t adcPin = A0;
volatile uint16_t adc_degeri;

void setup() {
  pinMode(interruptPin,INPUT);
  attachInterrupt(digitalPinToInterrupt(interruptPin),kesmeFonk,FALLING);
}

void loop() {

}

void kesmeFonk() {
  adc_degeri = analogRead(adcPin);
}
Cok tesekkurler yardimin icin
 
ADC pininin onune sample/hold ya da trace/hold devresi koyarsin.

Bobini enerjilersin. Enerjisini kesersin ve 40 uS sonra hold sinyali uretirsin. Bu esnada bobindeki emknin degeri analog olarak saklanmis olur. Daha sonra da bu degeri ADC ile olcersin.

Fakat zamanlamasi kritik islemler icin gerekirse low level kodlama yapman gerekir.

Altin arayacaksin galiba

ADC pininin onune sample/hold ya da trace/hold devresi koyarsin.

Bobini enerjilersin. Enerjisini kesersin ve 40 uS sonra hold sinyali uretirsin. Bu esnada bobindeki emknin degeri analog olarak saklanmis olur. Daha sonra da bu degeri ADC ile olcersin.

Fakat zamanlamasi kritik islemler icin gerekirse low level kodlama yapman gerekir.

Altin arayacaksin galiba.
Altin aramaktan ziyade isin hobi elektronik kismindayim daha once analog devreler yaptim smdi mikro islemcili olarak kendm bisiler yapmaya calisiyorum ogrenme ve keyif amacli diyebiliriz
 
Coktandir el atmak istedigim bir konuyu aklima getirdi bu sorunuz.
Pals enjeksiyonu teknigi ile altin arama duzenegini baba bir islemci ile full digital yapmak.
 

Forum istatistikleri

Konular
127,952
Mesajlar
913,875
Kullanıcılar
449,599
Son üye
Gksn

Yeni konular

Geri
Üst