terjeio 134 Posted October 16, 2015 Share Posted October 16, 2015 My (crazy) project is getting closer to completion so time to start a project topic. I have verified my Tiva C based controller design and are now waiting for PCBs - will arrive from China in a few days. My background is from Radio/TV servicing and medical electronics, but for the last 25 years I have mainly been working on a large database application written in OpenEdge. Two years ago my preamp that I made some 30 years ago started to fail due to the rubber based switches rotting (a bit like my brain these days...). Since I did not want to buy one I decided to make a new - again with no mechanical parts in the audio path. A lot has happened since back when I was involved in electronics, and I have spent some time doing research for what components are now available - to many one may argue. I decided to use a CPLD programmed in VHDL for the switching logic, high quality analog switches (my original design employed 40 series CMOS for these) and a VCA (voltage controlled amplifier) for volume control. I did not want to introduce a MCU because I believed I would get into trouble with the clock signal interfering with the audio... Anyway, my new design was successful and has now been in service for nearly two years. After doing this I took an interest in learning about microprocessors again, I started out with Atmel/Ardouino and Energia but I found that combination a bit lacking - no easy way to do debugging was a showstopper for me. I found the TI processors more appealing, CCS allows me to get my hands dirty on "bare metal" and a decent debugger makes life easier. So, here I am making another iteration of my preamp - this time involving no less than four TI processors. I have decided to post my project under the Tiva C header since it is the main workhorse, but the three other MCUs are 430s. Ok, enough rambling - here are the main components I have designed: Raspberry PI power switch - PC-style startup/shutdown, may be controlled over I2C or from a front panel switch. IR Remote Control - RC5 protocol. Main controller - Tiva C based, custom UI library and support for Keystone DAB radio. Preamp board, 5 line inputs with the option of switcing one to phono (magnetic cartridge - vinyl is getting popular again), DAB option, I2C control and still a VCA based volume control. I have recently switched to KiCad as my EDA, I did use Zenith PCB earlier but I am a bit scared to continue using that as it is licensed on a yearly basis (even if it is free) - who knows when it wil not be supported anymore. KiCad is open software and does not suffer from any limitations to number of pins or board size. Attached are the design files I have made for the Preamp board - the design is still to be verified, I will do that when I see how the controller board works out when arriving from the fabricator. 3D view from my KiCad design - I am too lazy to make my own 3D files so it is somewhat incomplete. There is a TI processor hidden on the bottom side, as is the KeyStone radio module. If everything goes to plan I will post about the bits and pieces that makes up the complete project. I even have mechanical design files (Vectric format) that may be used to make files in order fabricate the enclosures on a CNC-machine. Ok, enough for this time. Terje PreAmpBoard.zip bluehash, dubnet, oPossum and 2 others 5 Quote Link to post Share on other sites
bluehash 1,581 Posted October 16, 2015 Share Posted October 16, 2015 Looks good. There was a BoosterPack posted yesterday with an ADI audio DSP, if it gives you some inspiration. terjeio 1 Quote Link to post Share on other sites
terjeio 134 Posted November 2, 2015 Author Share Posted November 2, 2015 PCBs for the controller has now arrived from China, no routing errors! However I have some problems with the KeyStone DAB-module, I cannot get it to respond like the development board which works flawlessy - not good. The DAB module is on the preamp board, I have to delay sending it off for fabrication this until this is resolved. The controller is performing well, her are a few pics - code will follow later when I am happy with it: Frame is milled from 10mm solid aluminium. Assembled controller board, touch sensors are home-made - a bit of black art to get them working reliably when embedded in the aluminium block. Not too bad for beeing a prototype, I have to allow for some adjustment of the "wheel" - or find a way to perfectly align the alu block after turning it around to mill the front. timotet, Fmilburn, Rickta59 and 1 other 4 Quote Link to post Share on other sites
Rickta59 589 Posted November 2, 2015 Share Posted November 2, 2015 Neat project! Do you have any more pictures of how you did the dial? Quote Link to post Share on other sites
Fmilburn 445 Posted November 2, 2015 Share Posted November 2, 2015 Really nice build, especially for a prototype... Quote Link to post Share on other sites
timotet 44 Posted November 2, 2015 Share Posted November 2, 2015 +1 looks great! Quote Link to post Share on other sites
terjeio 134 Posted November 3, 2015 Author Share Posted November 3, 2015 Neat project! Do you have any more pictures of how you did the dial? Sorry, I do not have any. I am using Vectric VCarve and Cut2D for design and GCode generation. For the rounded 3D profiles on the touch buttons and the dial I used AutoDesk 123D in combination with Vectric VCarve. My mill is homemade and it is the main tool allowing me to do this kind of work - also great for drilling PCBs. I can make the files available - but I am unsure how many of you that have access to a mill and the software I use, so maybe they are of limited value? I am going to build a few more for some friends when time permits, I can document how I make the parts then. Quote Link to post Share on other sites
terjeio 134 Posted November 3, 2015 Author Share Posted November 3, 2015 Radio module is now up and running, I had used a 10K resistor instead of 1K for pulling up the battery detect pin. Great help from JP at MonkeyBoard Support! I have been thinking about how to publish the source code for best giving back to the community - there are several components I believe can be of use in other projects so perhaps it is wise to split it in parts. It is already split in several libraries: a modified LCD driver based on RobGs code, DAB module communications layer, UI library... The main code is also split in several files, separating it into logical blocks of code. I am using Subversion on my own server for source code control, I will not move to GitHub - but maybe it is possible to duplicate parts of my repository there without too much effort. It also a question of how much work I should put into this, will there be any interest in this project? For now, here is main.c - not much code: /* * main.c - Huracan Mk III Controller * * v1.0 / 2015-11-03 / Io Engineering / Terje * *//*Copyright (c) 2015, Terje IoAll rights reserved.Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met: Quote Link to post Share on other sites
terjeio 134 Posted February 20, 2016 Author Share Posted February 20, 2016 Finally got around to write a touch driver, it supports XPT2046 (and thus implicitly ADS7843?). I am not entirely happy with it as I had to slow down the sampling rate a lot to get consistent results, may be due to the display itself (noise?). Calibration code is by Carlos E. Vidales and routine for finding the median by Nicolas Devillard. I have modified my UI library to work with this as well, it requires a modified version of RobGs driver for Tiva C. Fmilburn and bluehash 2 Quote Link to post Share on other sites
Fmilburn 445 Posted February 20, 2016 Share Posted February 20, 2016 Thanks for the update @@terjeio. Can you explain a bit more about how you designed the touch sensors and the problems you had getting them to work with the aluminum surround? Quote Link to post Share on other sites
chicken 630 Posted February 21, 2016 Share Posted February 21, 2016 On the touch screen noise, two small capacitors on the lines you're measuring might help. Depending on the capacitor size, you will have to wait a few ms after applying power before reading the analog value. Quote Link to post Share on other sites
terjeio 134 Posted February 22, 2016 Author Share Posted February 22, 2016 @@Fmilburn - the driver is for lcd screens with a XPT2046 or ADS7843 resistive touch screen controller. The touch sensors I made myself is still not working properly, too sensitive and seems to be a tad temperature dependent as well. For these I am using Atmel AT42QT1011 & 12 touch sensor ICs, I guess I have to try different values for the sample capacitor. Since the prototype is in daily use and is working well I will do the testing when I make the next one - this because I have to completely dismantle the assembly to get access to the caps. @@chicken - not easy to add caps to thd lcd screen pcb, since I have only tested my driver with one (chinese) display it may be a bad one? If anybody want to try the code I can post it here - it is basically a simple drawing program, after calibration one can draw on the screen with one of a few different colors selected by pressing a button on the screen. Touch sensors in top of picture, milled from acrylic. The wire is soldered to a small metal plate in a pocket in the clear acrylic. Maybe I should have placed the touch sense caps on the other side of the PCB for easier access? Fmilburn 1 Quote Link to post Share on other sites
Fmilburn 445 Posted February 22, 2016 Share Posted February 22, 2016 OK, interesting. I have been sketching out a design having buttons integrated on the pcb,along the lines of this TI design. I haven't investigated anything like the AT42QT1011. Great work by the way... Quote Link to post Share on other sites
terjeio 134 Posted February 27, 2016 Author Share Posted February 27, 2016 Code for the demo project attached, lcd driver, touch driver, UI library and a simple drawing program. UIDemo.zip bluehash and Fmilburn 2 Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.