Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: FMY - 12 Ocak 2019, 17:07:48

Başlık: STM32F407 İLE QTR8 RC KULLANIRKEN PROBLEM YAŞIYORUM
Gönderen: FMY - 12 Ocak 2019, 17:07:48

(https://i.ibb.co/pzWYH6g/0-J4642-400.jpg) (https://ibb.co/pzWYH6g)
merhaba,
stm ile qtr sensörünü kullanmaya çalışıyorum ancak bu sensörler genelde hazır kütüphane ile kullanıldığı için kütüphaneyi stm e uyarlamakta zorlanıyorum. şimdi durum şöyle ki bu sensör analog ve dijital olarak ikiye ayrılıyor. analog olan qtr a dijital olan ise qtr rc. ben kırmızı 8li olan modelden kullanıyorum yani qtr 8 rc. bu model anladığım kadarı ile şöyle çalışıyor
3.3v veya 5v uyguladığınızda kondansatörü 10 mikro saniye şarj edip deşarj süresine göre foto transistörün önündeki malzemenin yansıtma oranına göre deşarj süresinden siyah mı beyaz mı olduğunu anlıyoruz.


(https://i.ibb.co/m8T5xCb/0-J631-200.jpg) (https://ibb.co/m8T5xCb)
 
sorum şu kodda aynı pinden önce output yapıp sarj ediyor sonra input yapıp sayıyor. ama aynı pini stm de hem input hem output yapmak datasheet de mümkün gibi görünüyor ama prtatikte beceremedim.


https://forum.pololu.com/t/qtr-8rc-without-libraries-chipkit/5669/6

#define numSensors 3
#define maxValue 4000

unsigned char pins[] = {2, 3, 7};
unsigned int sensor_values[numSensors];

void readSensors()
{
unsigned char i;

for(i = 0; i < numSensors; i++)
{
sensor_values[i] = maxValue;
digitalWrite(pins[i], HIGH); // make sensor line an output
pinMode(pins[i], OUTPUT); // drive sensor line high
}

delayMicroseconds(10); // charge lines for 10 us
for(i = 0; i < numSensors; i++)
{
pinMode(pins[i], INPUT); // make sensor line an input
}

unsigned long startTime = micros();
while (micros() - startTime < maxValue)
{
unsigned int time = micros() - startTime;
for (i = 0; i < numSensors; i++)
{
if (digitalRead(pins[i]) == LOW && time < sensor_values[i])
sensor_values[i] = time;
}
}
}

void setup()
{
Serial.begin(9600);
}

void loop()
{
unsigned char i;

readSensors();
for (i = 0; i < numSensors; i++)
{
Serial.print(sensor_values[i]);
Serial.print(" ");
}

delay(1000);
Serial.println();
}

Başlık: Ynt: STM32F407 İLE QTR8 RC KULLANIRKEN PROBLEM YAŞIYORUM
Gönderen: z - 12 Ocak 2019, 17:18:38
(https://i.ibb.co/m8T5xCb/0-J631-200.jpg) (https://ibb.co/m8T5xCb)

Bu sema cok mantıklı gorunmuyor. 10n kondansatör değil de 10k dirençtir.
Başlık: Ynt: STM32F407 İLE QTR8 RC KULLANIRKEN PROBLEM YAŞIYORUM
Gönderen: FMY - 12 Ocak 2019, 17:31:31
Alıntı yapılan: z - 12 Ocak 2019, 17:18:38(https://i.ibb.co/m8T5xCb/0-J631-200.jpg) (https://ibb.co/m8T5xCb)

Bu sema cok mantıklı gorunmuyor. 10n kondansatör değil de 10k dirençtir.


(https://i.ibb.co/N7ST0ZF/Ads-z.png) (https://ibb.co/N7ST0ZF)
Başlık: Ynt: STM32F407 İLE QTR8 RC KULLANIRKEN PROBLEM YAŞIYORUM
Gönderen: z - 13 Ocak 2019, 03:23:47
Alıntı yapılan: z - 12 Ocak 2019, 17:18:38(https://i.ibb.co/m8T5xCb/0-J631-200.jpg) (https://ibb.co/m8T5xCb)

Devrenin cikis pini ile baglantili I/O pinini H yap. Bu durumda 220 Ohm direnc optonun kollektor direnci olacaktir ve bu esnada kollektorden akan akim I ise 220*I gerilim dusumu kapasitede depolanir. Bu islem icin en azindan 10us zaman ayirmalisin.

Daha sonra bu I/O pinini Input moduna getir ve olcum yap. Bu kez olcecegin voltaj Vin-220*I olacaktir. H yada L.

Kodunda kullandigin fonksiyonlarin detayini bilmiyorum. Hangi pinin input output olacagini
tanimlamissin fakat hangi port icin tanimlandigini goremedim.