User Tools

Site Tools


jansonntag:attempt3

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
jansonntag:attempt3 [2021/02/07 18:10]
jan
jansonntag:attempt3 [2021/03/24 17:10] (current)
jan
Line 1: Line 1:
-====== Analog Cherry Keyboard Attempt 3 (WIP) ======+====== Analog Cherry Keyboard Attempt 3 ======
  
 After a while of looking at it, this seems far too complicated! There have to be simpler, cheaper, and more accurate solutions. I started searching for some ICs that maybe can do the trick but didn't found any good other than the links I posted above. But then Henrik found something great: The LDC1314 After a while of looking at it, this seems far too complicated! There have to be simpler, cheaper, and more accurate solutions. I started searching for some ICs that maybe can do the trick but didn't found any good other than the links I posted above. But then Henrik found something great: The LDC1314
Line 18: Line 18:
  
 I found even more detailed pictures on the website of the "mother-company" of knops: https://alltrons.com/analog-keyboard-technology/ I found even more detailed pictures on the website of the "mother-company" of knops: https://alltrons.com/analog-keyboard-technology/
- +They are only mentioning copyright for 2018 and 2019. The company seems to be very inactive.
-{{https://www.mememaker.net/api/bucket?path=static/img/memes/full/2017/Jun/4/4/im-about-to-destroy-this-mans-whole-career.jpg}}They are only mentioning copyright for 2018 and 2019. The company seems to be very inactive.+
  
 Now with a 5V to 3.3V converter with ultra-low noise output. With all these bypass capacitors this has to be a super-duper ultra-low noise circuit.  Now with a 5V to 3.3V converter with ultra-low noise output. With all these bypass capacitors this has to be a super-duper ultra-low noise circuit. 
Line 47: Line 46:
  
 So I need a 33.3kOhm resistor in front of the LTC6900 Set-Pin. So I need a 33.3kOhm resistor in front of the LTC6900 Set-Pin.
 +<WRAP center round tip 60%>
 +This (the LTC stuff above) will get "important" later, so you should read this article till the end.
 +</WRAP>
 +
  
 And here is my first "final" schematic then:\\  And here is my first "final" schematic then:\\ 
Line 114: Line 117:
 Let's go through this code step by step: Let's go through this code step by step:
   - Import the library and the Wire library (I2C)   - Import the library and the Wire library (I2C)
-  - Then instantiate an LDC131X Object (the false means now alternative address)+  - Then instantiate an LDC131X Object (the false means no alternative address)
   - The lastTen and pointer variables are needed later to calculate an average of 10 measurements   - The lastTen and pointer variables are needed later to calculate an average of 10 measurements
   - The setup starts with initiating the Wire and Serial communication   - The setup starts with initiating the Wire and Serial communication
Line 130: Line 133:
       - fREF0 = 43 Mhz       - fREF0 = 43 Mhz
       - fSENSOR0 = 5960,977 kHz ~ 6 Mhz (See the Webench screenshot)       - fSENSOR0 = 5960,977 kHz ~ 6 Mhz (See the Webench screenshot)
-      - {{https://www4b.wolframalpha.com/Calculate/MSP/MSP46401i4e44h1bb41h46600004a4935287fa011bd?MSPStoreType=image/gif&s=20&.png?|}}+      - {{:projects:settlecount0-math.gif?200|}}
       - 8.9563 + Margin = 15       - 8.9563 + Margin = 15
     - ldc1314.LDC_setClockDividers(0, 0x1002)     - ldc1314.LDC_setClockDividers(0, 0x1002)
Line 178: Line 181:
   - In the loop, I just read out the value of coil 0 (key D) and store the value in an array   - In the loop, I just read out the value of coil 0 (key D) and store the value in an array
   - If I have ten readouts I calculate the average and print it on Serial   - If I have ten readouts I calculate the average and print it on Serial
 +
 +As I found out through trial and error, because of the fact that the coils are so tiny and the spring inside the switch isn't huge either, I needed a high gain and a high offset. An easy way to describe this is like using a magnifier and looking at a specific part of the value. But if you want to find out more about this topic, this document here really helped me: [[https://www.ti.com/lit/an/snoa945/snoa945.pdf?ts=1612720736953&ref_url=https%253A%252F%252Fwww.google.com%252F|Optimizing L Measurement Resolution for the LDC1312 and LDC1314]]. Especially the pages 6 and 8 contain graphics that are really helpful. The whole document isn't that long and worth a read.
 +
 +As you may have seen I set the LDC to not use the external oscillator I put on the PCB. This is because I miss understood the reason for this pin to exist. It´s an alternative to the internal oscillator. I thought I would have to put in the value I calculated for ƒSENSOR in Webench. That's why I have a 6Mhz input now. This is not needed! The LDC will compare the oscillating frequency that comes back from the coil (this is the 6MHz I calculated) with the internal oscillator (40 MHz) or a given external oscillator. But the oscillating frequency should be greater than 4 x 6MHz. Because this isn't the case with the one I got, I´m just using the internal one. This works so the external one does not have to be populated on the PCB. This also saves in cost on the final PCB. I hope this was understandable.
 +
 +Here you can see both the board and the plotter in action (recorded separately):\\
 +{{:projects:20210208_113429.gif|}}{{:projects:com8_2021-02-08_11-28-45_trim.gif|}}
 +
 +As you may see the graph shows when the button is pressed and how far it is pressed. But the result is not very accurate and there is a lot of interference. This is because of the high gain I set. But otherwise, there wouldn't be a graph at all. The 12-bit resolution of the LDC1314 is just not accurate enough for this combination of coil and precision needed.
 +
 +So there will be an attempt 4. There I will test out the bigger brother of the LDC1314: The LDC1614. It has the same pinout and overall package, so it will be an in-place replacement. The big advantage is the 28-bit resolution. Hopefully, there is no gain needed then.
 +
 +\\
 +[[JanSonntag:attempt4|Attempt 4]]\\
  
jansonntag/attempt3.1612721459.txt.gz · Last modified: 2021/02/07 18:10 by jan