Şimdi Ara

arduino potansiyometre hatası (garip)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
13
Cevap
0
Favori
621
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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.



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

    < Bu ileti tablet sürüm kullanılarak atıldı >
  • Map etmeden direkt okursan hatanın nedeni daha iyi anlaşılır.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • 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.
  • Ö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 >
  • 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.
  • 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
  • İlginç. Ben olsam serial monitor ile hem tam değeri, hem de bölünmüş halini okuyup karşılaştırırdım.
  • 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ı >
  • 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.
  • 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);
    }
  • 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.




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.