Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
11
Cevap
724
Tıklama
0
Öne Çıkarma
arduino potansiyometre hatası (garip)
T
7 yıl
Teğmen
Konu Sahibi

arkadaşlar arduino üzerinden bir proje gerçekleştirmek istiyorum ancak potansiyometre işin içine girince garip bir hata alıyorum. kısacası bahsedeyim.
potansiyometre normalde 0-1023 arası değer gösteriyor ben bunu map komutu ile 0-20 aralığına dönüştürünce şöyle bir hata oluşuyor. potansiyometreyi 10 derece çevirince değer göstermiyor sonra çok az daha çevirince 1-2-3 diye değer gösteriyor ancak potansiyometreyi yarıya kadar çevirince benim belirlediğim sınır noktasına ulaşmış oluyor. yani yarıya kadar çevirince 20ye çoktan gelmiş oluyor ve gerisi boşa dönüyor. birbirinden farklı potansiyometrelerle denesemde her defasında aynı sorunu yaşadım.

bu bir hata mıdır hata ise nasıl düzeltilir.

teşekkürler.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



T
7 yıl
Teğmen
Konu Sahibi

Çözümü olan yok mu arkadaşlar



< Bu ileti tablet sürüm kullanılarak atıldı >

G
7 yıl
Yarbay

Map etmeden direkt okursan hatanın nedeni daha iyi anlaşılır.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
T
7 yıl
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: Guest-BF8E9B238

Map etmeden direkt okursan hatanın nedeni daha iyi anlaşılır.
hocam öncelikle yine cevabın için teşekkir ederim.

dediğine gelecek olursam map etmeden önce potansiyometre düzgün çalışıyor. 0 ila 1023 arasında değerler görüyorum potansiyometreyi ne kada rçevirirsem değer o kadar artıyor yani her şey normal çalışıyor devreyi hiç bozmadan map komutunu girince birden sapıtıyor daha potansiyometreyi yarıya kadar çevirmeden değer olarak sona ulaşmış oluyor bile.



G
7 yıl
Yarbay

Öyleyse şunu dene.

byte pot = analogRead(pin) / 51;





< Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 23 Kasım 2018; 20:38:41 >
Bu mesaja 2 cevap geldi.
T
7 yıl
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: Guest-BF8E9B238

Öyleyse şunu dene.

byte pot = analogRead(pin) / 51;
deneyeceğim hocam hemen. ayrıntıları yazarım. teşekkürler.



T
7 yıl
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: Guest-BF8E9B238

Öyleyse şunu dene.

byte pot = analogRead(pin) / 51;
yok dostum denedim bu da olmadı yani aslında oldu 1023 değerini 51e böldü ama yine potansiyometrenin yarısına gelmeden tepe noktasına ulaşıyor ve yarısı boşa dönüyor. valla anlamadım gitti



G
7 yıl
Yarbay

İlginç. Ben olsam serial monitor ile hem tam değeri, hem de bölünmüş halini okuyup karşılaştırırdım.


Bu mesaja 2 cevap geldi.
T
7 yıl
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: elektro_gadget

İlginç. Ben olsam serial monitor ile hem tam değeri, hem de bölünmüş halini okuyup karşılaştırırdım.

Hocam zaten bu denemelerin hepsini serial monitör ile yapiyorum. Gercekten ilginc bir durum. Yani normal bir pot kodunu yazip serial monitör de degerlere bakiyorum hkc bir sorun yok ardindan ayni kodun uzerine map komutunu yazip yukleyip serila monitöru acinca bu dedigim olay basima geliyor.

Isin ilginc yani birden fazla arduino kart ve birden fazla potansiyometre ile denememe ragmen hep ayni hatayi aliyorum.

Sonuc olarak kafayi yemek uzereyim.



< Bu ileti tablet sürüm kullanılarak atıldı >

T
7 yıl
Teğmen
Konu Sahibi

hocam aklıma şöyle bir fikir geldi acaba uygun mudur.
şimdi ben potansiyometreye map komutunu kullanmadığım zaman düzgün çalışıyor ya işte bende vantilatörü kullanmak için potansiyometreden gelen veriyi 1-2-3 aralığına dönüştüreceğime direk 1023/3 deyip 0-341 1. kademe, 341-682 arası 2. kademe ve 682-1023 arası 3. kademe olacak şekilde çalıştırsam uygun olur mu acaba. yani bu mümkn müdür. böylece map komutunu kullaamama gerek kalmaz bu şekilde olunca da potansiyometreler düzgün çalışır.

ancak bir nokta daha var. ben bu potansiyometre kısmını switch-case kodu ile kullanacağım ve switch kodunun değeri önceden potansiyometreden gelen dönüştürülmüş tek bir değerdi(1-2-3 gibi) şimdi tek bir değer değil bir aralık olacak (0-341 arası gibi) bunu nasıl kod şekline dönüştürüp switch koduna ekleyeceğim. yardım edersen çok mutlu olurum.




Bu mesajda bahsedilenler: @elektro_gadget
G
7 yıl
Yarbay

Bence serial'e yazarken hata yapıyorsun. Çünkü 0-1023 arası doğru, map kullanınca hatalı, üstelik bölme de hatalı çıkıyor diyorsun. Bu mümkün değil.

Şunu dener misin. Bu kod ile 0-255 arası bir değer okuman gerekiyor.

void loop()
{
// p -> hangi analog piniyse

byte pot = ((uint16_t) analogRead(p)) / 4;
Serial.write(pot);

delay(250);
}


Bu mesaja 1 cevap geldi.
T
7 yıl
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: Guest-BF8E9B238

Bence serial'e yazarken hata yapıyorsun. Çünkü 0-1023 arası doğru, map kullanınca hatalı, üstelik bölme de hatalı çıkıyor diyorsun. Bu mümkün değil.

Şunu dener misin. Bu kod ile 0-255 arası bir değer okuman gerekiyor.

void loop()
{
// p -> hangi analog piniyse

byte pot = ((uint16_t) analogRead(p)) / 4;
Serial.write(pot);

delay(250);
}
hocam sorunu buldum. sorunun kaynağını söylemedn önce vaktinizi çaldığım için öncelikle özür dilemeliyim :D

sorunun kaynağı: ben projemde lm35 sensörüde kullanacağım için void setup() kısmının içine analogReference(INTERNAL); kodunu giriyordum buda potansiyometreden gelen değerlerde bozulmalara neden oluyordu. çünkü analogReference(INTERNAL); kodu

alıntı

"""setup fonksiyonumuzda bulunan analogReference(INTERNAL); komutu, Arduino’muzun analogda dijitale çeviricisinin 1,1V referans voltajı kullanmasını sağlıyor. Bu sayede, analog girişten okuyacağımız 0-1023 arası değerlerin her bir adımı 1,0742 mV (milivolt) gerilime denk düşüyor. LM35 sıcaklık sensörünün çıkış bacağında okuduğumuz her 10 mV, 1 °C sıcaklığa denk geldiğinden; 10 / 1,0742 bize yaklaşık olarak 9,31 değerini veriyor. Yani bu demek oluyor ki, analog girişten ölçtüğümüz değeri 9,31 ile çarparsak, elde ettiğimiz sonuç sensörün verdiği çıkış geriliminin santigrat cinsinden karşılığını elde ediyoruz."""(https://maker.robotistan.com/arduino-dersleri-11-sicaklik-olcumu/)

alıntıda bahsedildiği üzere potansiyometredeki ölçümleri referans değeri doğrultusunda çevirdiği için hatalı sonuçlar alıyordum. yani bütün mesele bundan ibaretmiş hocam. o kodu çıkardığımda her şey düzeldi. yardımlarınız için teşekkür eder vaktiniz içinse tekrar özür dilerim.
iyi günler hepinize.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.