Sercan
--
- Katılım
- 17 Mart 2019
- Mesajlar
- 5,477
Atölyem için güç kaynağı, osiloskop gibi birçok ekipman edindim. Ben eksikleri giderdikçe ihtiyaçlar da sürekli artıyor. Bu iyi bir şey çünkü yaptığım işlerin derinliği artıyor ve birçok değeri takip etme imkanı kazanıyorum demektir. Tabii her güzel şeyin katlanılması gereken bir bedeli de var!
Neyse uzun zamandır denemeyi düşündüğüm bir projeyi artık uygulamam gerekiyor. Çünkü atölye eksik listemde yer alan sinyal jeneratörünü henüz alamadım. Neden bugün yapmaya başladım? Hurda kartlardan biriktirdiğim malzemeler yeterli seviyeye ulaştı, ortaya çıkan sonucu sağlıklı bir şekilde test edebilecek imkanlara sahibim yani şimdi tam zamanı.
Denemek istediğim proje, John isimli bir İngiliz tasarımı ve orijinal tasarım internet sitesinden takip edilebilir. ( http://www.vwlowen.co.uk/arduino/xr2206/XR2206-function-generator.htm ) Sitesinde PCB, şema ve kodları dahil bütün dokümanları paylaşmış. Copyright sayfasında referans göstererek paylaşmak konusunda genellikle bir itirazı olmadığını ifade etmiş. Bende o site kapanırsa bütün kaynakların erişilebilir olması için bir kez daha burada paylaşıyorum.
Güç kaynağı, XR-2206 sinyal üretici, opamp ve gösterge olarak proje tasarımı birkaç bölümden oluşuyor. Bütün bunlar iki adet PCB üzerinde toplanmış. Birisi ana kart diğeri ise sayaç işlevi olan gösterge için max7219 ile kontrol edilen 8 haneli 7-segmet frekans sayacı. Sayaç iyi çalışıyor fakat yazılım uygulandığında iki ölçüm arasında 1 saniye geçicme oluyor diye bir uyarıda bulunmuş. Belki ileride bu sayaç daha hızlı bir mikroişlemci ile revize edilerek bir iyileştirme yapılabilir.
Sinyal jenaratörü şeması.
Frekans aralığını belirleyen kondansatör değerleri.
Güç kaynağının şeması.
Bu da sayaç şeması.
John tarafından hazırlanmış baskı devre çizimleri ve yerleşim gösterimi. Çok detaylı güzel bir çalışma hazırladığı için gıyabında bir kez daha teşekkür edeyim.
Bu da ekranda kullanılan Arduino kodları.
Neyse uzun zamandır denemeyi düşündüğüm bir projeyi artık uygulamam gerekiyor. Çünkü atölye eksik listemde yer alan sinyal jeneratörünü henüz alamadım. Neden bugün yapmaya başladım? Hurda kartlardan biriktirdiğim malzemeler yeterli seviyeye ulaştı, ortaya çıkan sonucu sağlıklı bir şekilde test edebilecek imkanlara sahibim yani şimdi tam zamanı.
Denemek istediğim proje, John isimli bir İngiliz tasarımı ve orijinal tasarım internet sitesinden takip edilebilir. ( http://www.vwlowen.co.uk/arduino/xr2206/XR2206-function-generator.htm ) Sitesinde PCB, şema ve kodları dahil bütün dokümanları paylaşmış. Copyright sayfasında referans göstererek paylaşmak konusunda genellikle bir itirazı olmadığını ifade etmiş. Bende o site kapanırsa bütün kaynakların erişilebilir olması için bir kez daha burada paylaşıyorum.
Güç kaynağı, XR-2206 sinyal üretici, opamp ve gösterge olarak proje tasarımı birkaç bölümden oluşuyor. Bütün bunlar iki adet PCB üzerinde toplanmış. Birisi ana kart diğeri ise sayaç işlevi olan gösterge için max7219 ile kontrol edilen 8 haneli 7-segmet frekans sayacı. Sayaç iyi çalışıyor fakat yazılım uygulandığında iki ölçüm arasında 1 saniye geçicme oluyor diye bir uyarıda bulunmuş. Belki ileride bu sayaç daha hızlı bir mikroişlemci ile revize edilerek bir iyileştirme yapılabilir.
Sinyal jenaratörü şeması.
Frekans aralığını belirleyen kondansatör değerleri.
Güç kaynağının şeması.
Bu da sayaç şeması.
John tarafından hazırlanmış baskı devre çizimleri ve yerleşim gösterimi. Çok detaylı güzel bir çalışma hazırladığı için gıyabında bir kez daha teşekkür edeyim.
Bu da ekranda kullanılan Arduino kodları.
Kod:
#include "LedControl.h"
// https://github.com/wayoda/LedControl/releases
#include <FreqCounter.h>
// http://interface.khm.de/index.php/lab/interfaces-advanced/arduino-frequency-counter-library/
// Counter input must be D5.
//LedControl lc=LedControl(DIN,CLK,CS,1);
LedControl lc=LedControl(6, 8, 7, 1);
unsigned long frq;
void setup() {
lc.shutdown(0,false);
lc.setIntensity(0,4);
lc.clearDisplay(0);
delay(2000);
}
void loop() {
FreqCounter::f_comp=10; // Cal Value - Calibrate with professional Freq Counter
FreqCounter::start(1000); // 1000 ms Gate Time for 1Hz resolution.
while (FreqCounter::f_ready == 0); // Wait for counter to be ready
frq=FreqCounter::f_freq;
lc.clearDisplay(0); // Clear LED display.
printNumber(0, frq); // Break number into individual digits for LED display.
}
void printNumber(int addr, long num) {
byte c;
int j;
int d;
num < 1000 ? d = 4 : d = countDigits(num);
for (j=0; j<d; j++) {
c = num % 10; // Modulo division = remainder
num /= 10; // Divide by 10 = next digit
boolean dp = (j==3); // Add decimal point at 3rd digit.
lc.setDigit(addr, j, c, dp);
}
}
int countDigits(long num) {
int c = 0;
while (num) {
c++;
num /= 10;
}
return c;
}