Mehmet.b
"Senin plansızlığın, benim aciliyetim değildir."
- Katılım
- 9 Eylül 2023
- Mesajlar
- 546
Aslan Trafoya sorun bir de...
Kefil misin? EKA ya Timur abi kefil olmuştu.Aslan Trafoya sorun bir de...
Bende olmam. Espiri yaptımKimseye kefil olmam.
Frekansı @taydin abi belirler. Ben anlamıyorum maalesef. Daha onunda nasıl kullanılacağını öğreneceğimArtek den de fiyat alabilirsiniz. Adnan Bey
yardımcı olur. Frekansı da belirmeyi unutmayınız.
Ferrit Nüve | Artek Elektronik
Ferrit Nüve - Artek Elektronik Resmi Ürün Tanıtım Sitesidir.www.ferritnuve.com
Abi bunu değiştirdiğimizde 6-7 tane elemanın bacaklarının değişmesi gerekiyor. Bu durum da devreyi yeniden mi basmalıyız yoksa mevcut durumda teste devam edebilir miyiz?Devrenin ana şasesini doğrultucunun eksi çıkışı olarak tanımladım.
Abi GND yi çıkış tarafından 10000uF şasesine çekince olması gereken değişiklikler şöyle:Sadece opamp beslemelerini sağlayan regülatör değişiyor, başka değişen birşey olmayacak.
Ben kicad in yalancısıyım.Bir yanlışlık var, sadece regülatörün zenerinin bağlandığı yer değişiyor.
Ayrıca zeneri de 33V ile değiştiriyorum değil mi?Gökhan senin devrede sadece opamp'leri besleyen zenerin anodunu C7 nin eksisine bağlayacaksın, o kadar. Devrenin ana şasesini de oraya alabiliriz, ama o zaman diğer şaseleri değiştirmen lazım. Bence gerek yok, sadece zenerdeki değişikliği yapman yeterli.
C7 eksisinin şase kabul edilmesi devreyi kafanda irdelerken kolaylık sağlıyor, yoksa devrenin performansı üzerinde bir etkisi yok.
Ayrıca zeneri de 33V ile değiştiriyorum değil mi?
#include <SPI.h>
#define onikiv 16
#define yirmialtiv 20
#define otuzikiv 21
#define led 25
#define basamakBtn 10
#define yukariBtn 11
#define asagiBtn 12
float basamak = 0;
float yukari = 0;
float asagi = 0;
int bayrak = 0;
float voltaj = 0;
float akim = 0;
const int dacChipSelectPin = 17;
void setDac(int value, int channel) {
byte dacRegister = 0b00110000; // Varsayılan DAC kayıtlarını ayarlar B00110000, 1. bit DAC'yi seçer, A=0 B=1, 2. Bit giriş Tamponunu atlar, 3. bit çıkış kazancını 1x'e ayarlar, 4. bit aktif düşük kapatmayı kontrol eder. LSB burada önemsizdir.
int dacSecondaryByteMask = 0b0000000011111111; // 12 bitlik değer olan B00000000111111111'in son 8 bitini izole eder.
byte dacPrimaryByte = (value >> 8) | dacRegister; //Değer maksimum 12 Bit değerdir, Birincil Bayta giriş için değerden ilk 4 MSB'yi almak için 8 bayt sağa kaydırılır, ardından da Register ile BORed
byte dacSecondaryByte = value & dacSecondaryByteMask; // 8 LSB'yi izole etmek ve onu tek bir bayta indirmek için 12 bit değerini karşılaştırır.
// Ayarlanacak DAC'yi belirlemek için birincil Baytta MSB'yi ayarlar, DAC A=0, DAC B=1
switch (channel) {
case 0:
dacPrimaryByte &= ~(1 << 7);
break;
case 1:
dacPrimaryByte |= (1 << 7);
}
noInterrupts(); // DAC'ye veri göndermeye hazırlanmak için kesintileri devre dışı bırakın
digitalWrite(dacChipSelectPin, LOW); // DAC'yi seçmek için Chip Select pinini alçaltın:
SPI.transfer(dacPrimaryByte); // Birincil Baytı gönder:
SPI.transfer(dacSecondaryByte); // İkincil Baytı gönder
digitalWrite(dacChipSelectPin, HIGH); // DAC'nin seçimini kaldırmak için Chip Select pinini yükseğe alın:
interrupts(); // Kesintileri etkinleştir
}
void setup() {
// DAC KODLARI /////////////
pinMode(dacChipSelectPin, OUTPUT);
// set the ChipSelectPins high initially:
digitalWrite(dacChipSelectPin, HIGH);
// initialise SPI:
setDac(0, 0); //Amper
setDac(0, 1); //Volt
pinMode(onikiv, OUTPUT);
pinMode(yirmialtiv, OUTPUT);
pinMode(otuzikiv, OUTPUT);
pinMode(led, OUTPUT);
pinMode(basamakBtn, INPUT);
pinMode(yukariBtn, INPUT);
pinMode(asagiBtn, INPUT);
digitalWrite(onikiv, LOW);
digitalWrite(yirmialtiv, LOW);
digitalWrite(otuzikiv, LOW);
digitalWrite(led, LOW);
}
void loop() {
if (digitalRead(basamakBtn) == 1) {
if (bayrak <= 2) {
bayrak++;
} else if (bayrak > 3) {
bayrak = 0;
}
delay(300);
}
if (voltaj >= 30) {
voltaj = 0;
akim = 0;
}
if (digitalRead(yukariBtn) == 1) {
if (bayrak == 1) {
voltaj++;
akim++;
voltaj = voltaj * 136;
setDac(voltaj, 1); // Volt
akim = akim * 136;
setDac(akim, 0); //Amper
} else if (bayrak == 2) {
voltaj = voltaj + 10;
akim = akim + 10;
voltaj = voltaj * 136;
setDac(voltaj, 1); // Volt
akim = akim * 136;
setDac(akim, 0); //Amper
}
}
if (digitalRead(asagiBtn) == 1) {
if (bayrak == 1) {
voltaj--;
akim--;
voltaj = voltaj * 136;
setDac(voltaj, 1); // Volt
akim = akim * 136;
setDac(akim, 0); //Amper
} else if (bayrak == 2) {
voltaj = voltaj - 10;
akim = akim - 10;
voltaj = voltaj * 136;
setDac(voltaj, 1); // Volt
akim = akim * 136;
setDac(akim, 0); //Amper
}
}
digitalWrite(yirmialtiv, LOW);
digitalWrite(otuzikiv, LOW);
delay(20);
digitalWrite(onikiv, HIGH);
digitalWrite(led, HIGH);
}