0-10 V analog transmitter tasarımı

Başlatan ugurer, 16 Mart 2017, 16:32:25

ugurer

@ahmet_zxc tamamdır o zaman ilk elin günahı olmaz deyip dijital yapmaya çalışacağım.
@timpati  hx710 ile okuma kısmını halledebilirim benim sorunum çıkış kısmındaydı onu da bir şekilde çözmeye çalışacağım bakalım.

arslanndeniz

Merhaba pic ile hx711 i uart üzerinden haberleştirmeye çalışıyorum fakat bir türlü 24bit okuyamadım 10bit deger çıkıyor uart üzerinde kullandıgım pic16f15323 mplab ile yazıyorum

Erol YILMAZ

Alıntı yapılan: arslanndeniz - 17 Mayıs 2021, 17:37:30Merhaba pic ile hx711 i uart üzerinden haberleştirmeye çalışıyorum fakat bir türlü 24bit okuyamadım 10bit deger çıkıyor uart üzerinde kullandıgım pic16f15323 mplab ile yazıyorum

Kod nasıl ?

dumansiz

Alıntı yapılan: arslanndeniz - 17 Mayıs 2021, 17:37:30Merhaba pic ile hx711 i uart üzerinden haberleştirmeye çalışıyorum fakat bir türlü 24bit okuyamadım 10bit deger çıkıyor uart üzerinde kullandıgım pic16f15323 mplab ile yazıyorum
Merhaba noktalama işareti kullanmadığınız için söylediklerinizi anlayamadım. "UART" derken neyi kastediyorsunuz? HX711'de UART arayüzü yok.
HX711'in "SCK" pinine 24 bit kare dalga uyguluyorsunuz, HX711'in  DOUT pininden 24 bit veriyi alıyorsunuz.
https://cdn.sparkfun.com/datasheets/Sensors/ForceFlex/hx711_english.pdf
Datasheet'in 5.sayfasında girişe karşılık, çıkış resmi var.

arslanndeniz

#34
hx711 ile işlemciden okuduğum değeri devremdeki rs232 yani uart üzerinden pcde okumak istiyorum. ama okurken printf komutunda bir sıkıntı olduğunu fark ettim

#include "mcc_generated_files/mcc.h"

#include <limits.h>
#include <stdio.h>


#define sck RC0
#define dout RC1


  char txt[11];
  unsigned long yuk;
  unsigned long sum;
  
uint32_t temp;


/*
                        Main application
*/



    unsigned long ortalama(void)
{
            unsigned long data;
            unsigned char i;
            dout=1;
            sck=0;
            data=0;
            while(dout);
            for (i=0;i<24;i++){
                sck=1;
                data=data<<1;
                sck=0;
                if(dout) data++;
            }
            sck=1;
            data=data^0x800000;
            sck=0;
            return(data);
}

  unsigned long deger(void){
      unsigned long sum;
      unsigned char k;
      for(k=0;k<20;k++){
          sum=sum+ortalama();
      }
      sum=sum/20;
      return(sum);
  }





void main(void)
{
    // initialize the device
    SYSTEM_Initialize();
    
//    TRISC=0X02;
//    PORTC=0X00;

    // When using interrupts, you need to set the Global and Peripheral Interrupt Enable bits
    // Use the following macros to:

    // Enable the Global Interrupts
    INTERRUPT_GlobalInterruptEnable();

    // Enable the Peripheral Interrupts
    INTERRUPT_PeripheralInterruptEnable();

    // Disable the Global Interrupts
    //INTERRUPT_GlobalInterruptDisable();

    // Disable the Peripheral Interrupts
    //INTERRUPT_PeripheralInterruptDisable();
    
    TRISC=0X02;
    PORTC=0X00;
    
    
    printf("\n\rbasliyo\n\r");
    __delay_ms(2000);
    
  
    while (1)
    {
        // Add your application code
        
//        yuk=deger();
//            if(EUSART1_DataReady)
//              EUSART1_Write();      
//            printf("\n\r%i",ortalama());      
//        printf("%ju\n\r",deger());
//        int a=321;
//        sprintf(txt,"%lu",ortalama());
        
      
        
        LED_SetHigh();
        __delay_ms(250);
        LED_SetLow();
        __delay_ms(250); 
        
    
    }
    return;
}
/**
End of File
*/


/*
                        Main application
*/

magnetron

Alıntı yapılan: dumansiz - 18 Mayıs 2021, 10:45:34Merhaba noktalama işareti kullanmadığınız için söylediklerinizi anlayamadım. "UART" derken neyi kastediyorsunuz? HX711'de UART arayüzü yok.
HX711'in "SCK" pinine 24 bit kare dalga uyguluyorsunuz, HX711'in  DOUT pininden 24 bit veriyi alıyorsunuz.
https://cdn.sparkfun.com/datasheets/Sensors/ForceFlex/hx711_english.pdf
Datasheet'in 5.sayfasında girişe karşılık, çıkış resmi var.

konuyu bölmeden ben de bişey sorayım
@dumansiz hocam ben HX711 çalıştırdım ama sahada kullanmadım
sizce sahada kullanılabilir mi ? gürültü vs sorunlar var mı ?
teşekkür

kimlenbu

Endüstriyel bir kart olacaksa "AD5748ACPZ" öneririm. Hem 4-20mA hem de 0-10V çıkışı var. Harici referans voltajı vermek için "REF3040AIDBZT" kullanabilirsin.


dumansiz

Alıntı yapılan: magnetron - 18 Mayıs 2021, 16:21:30konuyu bölmeden ben de bişey sorayım
@dumansiz hocam ben HX711 çalıştırdım ama sahada kullanmadım
sizce sahada kullanılabilir mi ? gürültü vs sorunlar var mı ?
teşekkür
Maalesef bende sahada kullanmadım.

Alıntı yapılan: kimlenbu - 18 Mayıs 2021, 16:51:06Endüstriyel bir kart olacaksa "AD5748ACPZ" öneririm. Hem 4-20mA hem de 0-10V çıkışı var. Harici referans voltajı vermek için "REF3040AIDBZT" kullanabilirsin.
0-5V çıkış seçeneği de varmış. 

e-zeki

Alıntı yapılan: magnetron - 18 Mayıs 2021, 16:21:30sizce sahada kullanılabilir mi ? gürültü vs sorunlar var mı ?

@magnetron
Ben kullandım. İstediğiniz hassasiyete göre değişiyor açıkçası. zaten yanlış hatırlamıyorsam en iyi senaryoda bile 19 noise free bit verebiliyordu sps 10 yeterli ise 17 bit garanti ölçüm yapmıştım fakat 10 sps biraz düşük kalıyordu. gürültü geçirimi %75 devre tasarımına bağlı dışarıdan aman aman etkilenmiyor. ama bi ADS12XX serisinin performansını beklemeyin derim.

magnetron

Alıntı yapılan: e-zeki - 19 Mayıs 2021, 17:01:04@magnetron
Ben kullandım. İstediğiniz hassasiyete göre değişiyor açıkçası. zaten yanlış hatırlamıyorsam en iyi senaryoda bile 19 noise free bit verebiliyordu sps 10 yeterli ise 17 bit garanti ölçüm yapmıştım fakat 10 sps biraz düşük kalıyordu. gürültü geçirimi %75 devre tasarımına bağlı dışarıdan aman aman etkilenmiyor. ama bi ADS12XX serisinin performansını beklemeyin derim.

@e-zeki hocam merhaba
yanlış hatırlamıyorsam 80 sps yapabiliyorduk
peki 80 sps yapıp nasıl bir filtreden geçirirsek ölçümü iyileştirebiliriz
mesela son 10 veya son 20 adet ölçümün averajını almak yeterli mi

teşekkür

e-zeki

@magnetron
Hocam ne istediğine bağlı biraz stabil ölçüm olsun zıplayıp durmasın diyorsan averaj mantıklı fakat spikeları es geçeyim net ölçeyim istiyorsan smoothing algoritmalarından birini de eklemeni öneririm (qsort, medyan, heap, vs.) çünkü averaj tepe ve dipleri görmezden gelmiyor o yüzden gürültülü çalışmaya başlarsa gerçek değerle ölçüm arasında bir offset oluşmasına sebep oluyor.