Lamba kontrolü için yardım bekleniyor arduino & rp2040

halukmy

Üye
Katılım
7 Şub 2022
Mesajlar
23
Puanları
1
Yaş
68
DIM_PWM: Only use for PWM dimming signal in our device, generate a frequency is around 400Hz. Not relative to 0-10V analog signal.
DAC_PWM: Use for 0-10V analog signal output, work with a RC filter outside the RP2040.
DAC_FP: Use for detecting the 0-10V analog signal and adjust the 0-10V signal by a PID algorithm, to form a closed loop control

burada 400hz veri çıktığını gösteriyor, biz arduino ile digitalwrite veya analog write dışında nasıl bu pinleri kontrol ederiz?


1683701355127.png
 
Başka nasıl bir kontrol yöntemi olduğunu biliyorsunuz?
Ya dijital çıkış olur on/off yapılır ya da pwm olur, zaten
o da dijital çıkıştır.
 
Başka nasıl bir kontrol yöntemi olduğunu biliyorsunuz?
Ya dijital çıkış olur on/off yapılır ya da pwm olur, zaten
o da dijital çıkıştır.
ilk defa birşey duydum şu şekilde söyledi

DIM_PWM: Only use for PWM dimming signal in our device, generate a frequency is around 400Hz. Not relative to 0-10V analog signal.
DAC_PWM: Use for 0-10V analog signal output, work with a RC filter outside the RP2040.
DAC_FP: Use for detecting the 0-10V analog signal and adjust the 0-10V signal by a PID algorithm, to form a closed loop control

We are using 0-10V dimming signal only.
Not using PWM dimming signal.
DAC_FB is ADC channel use for analog signal detecting, it is not a control pin.


it means using dac_pwm and dac_fp using same time?


soruma evet dedi, burda bu ikisini kombinasyonlamayı nasıl yaparız?

chatpgpt den yardım istedim o da şu tarz kod verdi
Kod:
#include <PID_v1_bc.h>  // https://github.com/drf5n/Arduino-PID-Library





// Define the DAC and ADC pins

const int DAC_PIN = 0;

const int ADC_PIN = A0;

// Define the PID constants

double kp = 1.0;  // Proportional constant

double ki = 0.0;  // Integral constant

double kd = 0.0;  // Derivative constant

// Define the setpoint and initial output voltage

double setpoint = 5.0;

double output_voltage = 5.0;

// Create the PID object

PID myPID(&analogRead(ADC_PIN), &output_voltage, &setpoint, kp, ki, kd, DIRECT);

void setup() {

  // Initialize the DAC and ADC pins

  analogWriteResolution(12);  // Set the DAC resolution to 12 bits

  analogReadResolution(12);   // Set the ADC resolution to 12 bits

  // Initialize the PID object

  myPID.SetMode(AUTOMATIC);

}

void loop() {

  // Read the current value of the analog signal using the ADC

  double analog_value = analogRead(ADC_PIN) * (10.0 / 4095.0);  // Convert the ADC reading to volts

  // Set the setpoint value

  setpoint = 5.0;  // Replace this with your desired setpoint value

  // Calculate the output voltage adjustment using the PID algorithm

  myPID.Compute();

  // Apply the output voltage adjustment to the DAC to adjust the output voltage

  int output_dac_value = (int)(output_voltage * 4095.0 / 10.0);  // Convert the voltage to DAC value

  analogWrite(DAC_PIN, output_dac_value);

  // Delay for a short period of time to allow the system to stabilize

  delay(10);

}
 
Moderatör tarafında düzenlendi:
Birincisi İngilizcem yok, açıklama yapabilirsiniz.
İkincisi kodlarınızı kod tagı içine alınız. Daha kolay
okunur.
 
Birincisi İngilizcem yok, açıklama yapabilirsiniz.
İkincisi kodlarınızı kod tagı içine alınız. Daha kolay
okunur.
Tabiki hemen güncel halini paylaşıyorum

DIM_PWM: Cihazımızda sadece PWM dimleme sinyali için kullanınız, 400Hz civarında bir frekans üretmektedir. 0-10V analog sinyale göre değil.
DAC_PWM: 0-10V analog sinyal çıkışı için kullanın, RP2040 dışında bir RC filtresi ile çalışın.
DAC_FP: Kapalı döngü kontrolü oluşturmak için 0-10V analog sinyali algılamak ve 0-10V sinyalini bir PID algoritması ile ayarlamak için kullanın.

Yalnızca 0-10V kısma sinyali kullanıyoruz.
PWM karartma sinyali kullanılmıyor.
DAC_FB, analog sinyal tespiti için ADC kanalı kullanımıdır, bir kontrol pimi değildir.


aynı zamanda dac_pwm ve dac_fp kullanmak anlamına mı geliyor?


soruma evet dedi, burada bu birimlerin birleşimini nasıl iletiyor?

chatpgpt den yardım istedim o da şu tarz kod verdi
Kod:
#include <PID_v1_bc.h> // https://github.com/drf5n/Arduino-PID-Library


// DAC ve ADC pinlerini tanımlayın
sabit int DAC_PIN = 0;
sabit int ADC_PIN = A0;
// PID sabitlerini tanımlayın
double kp = 1.0; // Orantılı sabit
çift ki = 0.0; // İntegral sabiti
double kd = 0.0; // Türev sabiti
// Ayar noktasını ve ilk çıkış gerilimi
çift ayar noktasını tanımlayın = 5.0;
çift çıkış voltajı = 5.0;
// PID nesnesini oluştur
PID myPID(&analogRead(ADC_PIN), &output_voltage, &setpoint, kp, ki, kd, DIRECT);
geçersiz kurulum () {
// DAC ve ADC pinlerini başlat
analogWriteResolution(12); // DAC çözünürlüğünü 12 bit olarak ayarla
analogReadResolution(12); // ADC çözünürlüğünü 12 bit olarak ayarla
// PID nesnesini başlat
myPID.SetMode(OTOMATİK);
}
boşluk döngüsü () {
// ADC çiftini kullanarak analog sinyalin mevcut değerini okuyun
analog_value = analogRead(ADC_PIN) * (10.0 / 4095.0); // ADC okumasını volta dönüştürün
// Ayar noktası değeri
ayar noktası = 5.0 olarak ayarlayın; // Bunu istediğiniz ayar noktası değeriyle değiştirin
// PID algoritması myPID.Compute(); kullanarak çıkış voltajı ayarını hesaplayın
;
// Çıkış voltajını ayarlamak için çıkış voltajı ayarını DAC'ye uygulayın
int output_dac_value = (int)(output_voltage * 4095.0 / 10.0); // Gerilimi DAC değerine çevir
analogWrite(DAC_PIN, output_dac_value);
// Sistemin gecikmeyi stabilize etmesine izin vermek için kısa bir süre gecikme
(10);
 
Moderatör tarafında düzenlendi:
Baştan başlayalım.
Bu cihaz nedir, ne için kullanılacak, kontrol neyden
yapılacak, vs.???
Mesele "Google Translate" değil.
 
bu bir aydınlatma kontrol cihazı, normalde böyle cihazlarla çalıştık, analogwrite veya digitalwrite ile pwm yaptırarak esp32 ve stm32 ile , sokak lambasının aydınlatma gücünü arttırıp azaltabiliyoruz,

bu rp2040 isimli bir microchip , oldukça uzun uğraşlar sonucu lambanın enerji değişiminde herhangi birşey olmadı henüz, o ilk sayfaaki pwm pinleri üzerinden lambanın sürücüsünün gücünü değiştirmemiz gerekiyor
 
Tam şema yok mu acaba?
Ek:
Bu cihazı başka bir Arduino ile kontrol
mü edeceksiniz?
 
Derdini söylemeyen derman bulamazmış!
 

Forum istatistikleri

Konular
128,126
Mesajlar
915,255
Kullanıcılar
449,841
Son üye
nazoyata

Yeni konular

Geri
Üst