Merge branch 'academic' into 'master'
Academic See merge request ariejan/devroom.io!9
This commit is contained in:
commit
a638f5fb4e
|
@ -2,26 +2,14 @@ image: ariejan/dockerized-hugo:latest
|
|||
|
||||
test:
|
||||
script:
|
||||
# Compile
|
||||
- hugo
|
||||
|
||||
# Compress CSS
|
||||
- yui-compressor public/css/style.css -o public/css/style-min.css
|
||||
- mv -f public/css/style-min.css public/css/style.css
|
||||
|
||||
# Mogrify thumbnails
|
||||
- mkdir -p public/img/thumbs
|
||||
- cd public/img
|
||||
- mogrify -format png -path thumbs -thumbnail 724 *.png
|
||||
- mogrify -format jpg -path thumbs -thumbnail 724 *.jpg
|
||||
|
||||
except:
|
||||
- master
|
||||
|
||||
pages:
|
||||
before_script:
|
||||
# Setup SSH keys
|
||||
- mkdir -p ~/.ssh # Setup SSH
|
||||
- mkdir -p ~/.ssh
|
||||
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- whoami
|
||||
|
@ -32,27 +20,17 @@ pages:
|
|||
- ssh -vv -i ~/.ssh/id_rsa ariejan@mail.devroom.io exit; echo $?
|
||||
|
||||
script:
|
||||
# Compile
|
||||
- hugo
|
||||
|
||||
# Compress CSS
|
||||
- yui-compressor public/css/style.css -o public/css/style-min.css
|
||||
- mv -f public/css/style-min.css public/css/style.css
|
||||
|
||||
# Mogrify thumbnails
|
||||
- mkdir -p public/img/thumbs
|
||||
- cd public/img
|
||||
- mogrify -format png -path thumbs -thumbnail 724 *.png
|
||||
- mogrify -format jpg -path thumbs -thumbnail 724 *.jpg
|
||||
|
||||
# Deploy
|
||||
- cd "$CI_PROJECT_DIR"
|
||||
- rsync -az4 -e 'ssh -i ~/.ssh/id_rsa -l ariejan' --stats --delete-after public/* mail.devroom.io:/home/ariejan/www/devroom.io/
|
||||
|
||||
artifacts:
|
||||
paths:
|
||||
- public
|
||||
|
||||
environment:
|
||||
name: production
|
||||
url: https://www.devroom.io
|
||||
|
||||
only:
|
||||
- master
|
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[submodule "themes/academic"]
|
||||
path = themes/academic
|
||||
url = https://github.com/gcushen/hugo-academic
|
400
config.toml
400
config.toml
|
@ -1,52 +1,364 @@
|
|||
# Configuration of Academic
|
||||
# Documentation: https://sourcethemes.com/academic/
|
||||
#
|
||||
# This file is formatted using TOML syntax - learn more at https://learnxinyminutes.com/docs/toml/
|
||||
# Each configuration section is defined by a name in square brackets (e.g. `[outputs]`).
|
||||
|
||||
# The URL of your website.
|
||||
# End your URL with a `/` trailing slash, e.g. `https://example.com/`.
|
||||
baseurl = "https://www.devroom.io/"
|
||||
builddrafts = false
|
||||
canonifyurls = true
|
||||
contentdir = "content"
|
||||
languageCode = "en-US"
|
||||
layoutdir = "layouts"
|
||||
publishdir = "public"
|
||||
theme = "cocoa-eh"
|
||||
|
||||
# Title of your site
|
||||
title = "ariejan de vroom"
|
||||
copyright = "Ariejan de Vroom"
|
||||
disqusshortname = ""
|
||||
pluralizelisttitles = false
|
||||
|
||||
PygmentsCodeFences = true
|
||||
pygmentsuseclasses = false
|
||||
pygmentsstyle = "pastie"
|
||||
# Your copyright notice - appears in site footer.
|
||||
# To display a copyright symbol, type `©`.
|
||||
copyright = "Copyright © 1999 - 2019 Ariejan de Vroom"
|
||||
|
||||
[author]
|
||||
name = "Ariejan de Vroom"
|
||||
theme = "academic"
|
||||
enableEmoji = true
|
||||
footnotereturnlinkcontents = "<sup>^</sup>"
|
||||
ignoreFiles = ["\\.Rmd$", "\\.Rmarkdown$", "_files$", "_cache$"]
|
||||
preserveTaxonomyNames = true
|
||||
paginate = 10
|
||||
canonifyurls = true
|
||||
|
||||
[permalinks]
|
||||
blog = "/:year/:month/:day/:slug/"
|
||||
electronics = "/:year/:month/:day/:slug/"
|
||||
|
||||
[taxonomies]
|
||||
category = "categories"
|
||||
tag = "tags"
|
||||
# Enable comments by entering your Disqus shortname
|
||||
disqusShortname = ""
|
||||
|
||||
# Enable analytics by entering your Google Analytics tracking ID
|
||||
googleAnalytics = "UA-60089-16"
|
||||
|
||||
# Default language to use (if you setup multilingual support)
|
||||
defaultContentLanguage = "en"
|
||||
hasCJKLanguage = false # Set `true` for Chinese/Japanese/Korean languages.
|
||||
defaultContentLanguageInSubdir = false
|
||||
|
||||
# Get last modified date for content from Git?
|
||||
enableGitInfo = true
|
||||
|
||||
[outputs]
|
||||
home = [ "HTML", "CSS", "RSS", "JSON" ]
|
||||
section = [ "HTML", "RSS" ]
|
||||
|
||||
# Configure BlackFriday Markdown rendering.
|
||||
# See: https://gohugo.io/getting-started/configuration/#configure-blackfriday
|
||||
[blackfriday]
|
||||
hrefTargetBlank = true # `true` opens external links in a new tab.
|
||||
fractions = true # `false` disables smart fractions (e.g. 5/12 formatted as a fraction).
|
||||
smartypants = true # `false` disables all smart punctuation substitutions (e.g. smart quotes, dashes, fractions).
|
||||
extensions = ["backslashLineBreak"]
|
||||
|
||||
[params]
|
||||
dateform = "2 Jan, 2006"
|
||||
dateformfull = "Mon 2 Jan 2006 15:04:05 MST"
|
||||
description = "a blog by ariejan de vroom about software engineering and electronics."
|
||||
copyright = "Copyright © 1996 - 2019 Ariejan de Vroom"
|
||||
copyrightUrl = "https://creativecommons.org/licenses/by/4.0/"
|
||||
logofile = "img/logo.png"
|
||||
faviconfile = "favicon.ico"
|
||||
highlightjs = false
|
||||
progressively = false
|
||||
share = true
|
||||
latestpostcount = 7
|
||||
github = "ariejan"
|
||||
email = "ariejan@devroom.io"
|
||||
linkedin = "ariejan"
|
||||
twitter = "ariejan"
|
||||
facebook = ""
|
||||
social_banner = "img/banner.png"
|
||||
usesmallsummarycard = true
|
||||
posts_navigation = true
|
||||
# issoHost = "comments.domain.tld:1234"
|
||||
# githubRepo = "githubUsername/repositoryName"
|
||||
small_banner_logo = false
|
||||
book_recommendations = false
|
||||
# AUTHOR SETUP
|
||||
|
||||
# Your details.
|
||||
name = "Ariejan de Vroom"
|
||||
role = "Software Engineer and Electronics Tinkerer"
|
||||
|
||||
# Organizations/Affiliations.
|
||||
# Separate multiple entries with a comma, using the form: `[ {name="Org1", url=""}, {name="Org2", url=""} ]`.
|
||||
#organizations = [ { name = "Kabisa", url = "https://www.kabisa.nl" }, {name="deVroom Audio", url=""} ]
|
||||
organizations = [ ]
|
||||
|
||||
gravatar = true # Get your avatar from Gravatar.com? (true/false)
|
||||
avatar = "portrait.jpg" # Specify an avatar image (in `static/img/` folder) or delete value to disable avatar.
|
||||
|
||||
# Details for the Contact Widget
|
||||
email = "ariejan@devroom.io"
|
||||
address = "Son en Breugel, The Netherlands"
|
||||
office_hours = ""
|
||||
phone = ""
|
||||
skype = ""
|
||||
telegram = ""
|
||||
keybase = "adevroom" # Your keybase.io username.
|
||||
|
||||
# Enter an optional link for booking appointments (e.g. calendly.com).
|
||||
appointment_url = ""
|
||||
|
||||
# Discussion link (e.g. link to a forum, mailing list, or chat).
|
||||
# Uncomment line below to use.
|
||||
# discussion = { name = "Discuss", url = "https://discourse.gohugo.io" }
|
||||
|
||||
# Enable/disable map in Contact widget.
|
||||
# To show your address on a map in the contact widget, you need to enter your latitude, longitude and choose
|
||||
# a map provider below.
|
||||
# To use Google Maps, set `map = 1` and enter your API key that can be obtained here:
|
||||
# https://developers.google.com/maps/documentation/javascript/get-api-key
|
||||
# To use OpenStreetMap tiles, set `map = 2`.
|
||||
# To use OpenStreetMap on a high traffic site, set `map = 3` and enter your API key that can be obtained here:
|
||||
# https://www.mapbox.com/studio/account/tokens
|
||||
# To get your coordinates, right-click on Google Maps and choose "What's here?". The coords will show up at the bottom.
|
||||
#
|
||||
# Map provider:
|
||||
# 0: No map
|
||||
# 1: Google Maps
|
||||
# 2: OpenStreetMap (Mapnik)
|
||||
# 3: OpenStreetMap (Mapbox)
|
||||
map = 0
|
||||
map_api_key = ""
|
||||
latitude = "51.513487"
|
||||
longitude = "5.505905"
|
||||
zoom = 5
|
||||
|
||||
# SITE SETUP
|
||||
|
||||
# Color theme.
|
||||
# Choose from `default`, `ocean`, `forest`, `dark`, `apogee`, `1950s`, `coffee`, `cupcake`.
|
||||
# color_theme = "default"
|
||||
color_theme = "ocean"
|
||||
|
||||
# Enable users to switch between day and night mode?
|
||||
day_night = true
|
||||
|
||||
# Font style.
|
||||
# Choose from `default`, `classic`, or `playfair`.
|
||||
font = "default"
|
||||
|
||||
# Description for social sharing and search engines. If undefined, author role is used in place.
|
||||
description = ""
|
||||
|
||||
# Default image for social sharing and search engines. Place image in `static/img/` folder and specify image name here.
|
||||
sharing_image = ""
|
||||
|
||||
# Twitter username (without @). Used when a vistor shares your site on Twitter.
|
||||
twitter = "ariejan"
|
||||
|
||||
# Diplay a logo in navigation bar rather than title (optional).
|
||||
# To enable, place an image in `static/img/` and reference its filename below. To disable, set the value to "".
|
||||
logo = ""
|
||||
|
||||
# Date and time format (refer to https://sourcethemes.com/academic/docs/customization/#date-format )
|
||||
# Examples: "Mon, Jan 2, 2006" or "2006-01-02"
|
||||
date_format = "2 Jan 2006"
|
||||
# Examples: "3:04 pm" or "15:04"
|
||||
time_format = "15:04"
|
||||
|
||||
# Show estimated reading time for posts?
|
||||
reading_time = true
|
||||
|
||||
# Display comment count? Requires commenting to be enabled.
|
||||
comment_count = true
|
||||
|
||||
# Display next/previous section pager?
|
||||
section_pager = false
|
||||
|
||||
# Enable global LaTeX math rendering?
|
||||
# If false, you can enable it locally on a per page basis.
|
||||
math = false
|
||||
|
||||
# Highlight.js options
|
||||
# highlight
|
||||
# Enable global source code highlighting? If false, you can
|
||||
# override it for a particular page in that page's preamble.
|
||||
#
|
||||
# Example: highlight = true
|
||||
#
|
||||
# highlight_languages
|
||||
# Add support for highlighting additional languages. Support for
|
||||
# languages mentioned here will be included in all pages.
|
||||
#
|
||||
# Example: highlight_languages = ["go", "lisp", "ocaml"]
|
||||
#
|
||||
# highlight_style
|
||||
# Choose a different CSS style for highlighting source
|
||||
# code. Setting this option in a page's preamble has no
|
||||
# effect.
|
||||
#
|
||||
# Example: highlight_style = "github-gist"
|
||||
#
|
||||
# For the list of supported languages and styles, see:
|
||||
# https://cdnjs.com/libraries/highlight.js/
|
||||
#
|
||||
# For more info on the highlighting options, see:
|
||||
# https://sourcethemes.com/academic/docs/writing-markdown-latex/#highlighting-options
|
||||
highlight = true
|
||||
highlight_languages = ["go", "ruby", "yaml", "apache", "arduino", "bash", "cpp", "css", "dns", "dockerfile", "elixir", "erb", "haml", "gherkin", "http", "java", "javascript", "json", "markdown", "nginx", "openscad", "pgsql", "php", "plaintext", "scss", "sql", "tex", "vim", "xml" ]
|
||||
highlight_style = "ir-black"
|
||||
|
||||
# Enable native social sharing buttons?
|
||||
sharing = true
|
||||
|
||||
# Privacy pack
|
||||
# Show a cookie consent message to visitors
|
||||
# Anonymize IP in Google Analytics (if enabled)
|
||||
privacy_pack = false
|
||||
|
||||
# Link custom CSS and JS assets
|
||||
# (relative to /static/css and /static/js respectively)
|
||||
custom_css = []
|
||||
custom_js = []
|
||||
|
||||
# Publication types.
|
||||
# Used to categorize publications.
|
||||
# The index of the publication type in the list is used as its unique numerical identifier.
|
||||
# The numeric ID is used in a publication's frontmatter to categorize it.
|
||||
# The language can be edited below.
|
||||
# For multilingual sites, `publication_types` can be copied to each language section at the end of this file and
|
||||
# translated.
|
||||
publication_types = [
|
||||
'Uncategorized', # 0
|
||||
'Conference paper', # 1
|
||||
'Journal article', # 2
|
||||
'Manuscript', # 3
|
||||
'Report', # 4
|
||||
'Book', # 5
|
||||
'Book section' # 6
|
||||
]
|
||||
|
||||
[permalinks]
|
||||
post = "/:year/:month/:day/:slug"
|
||||
|
||||
# Configuration of talk pages.
|
||||
[params.talks]
|
||||
# Show talk time?
|
||||
time = true
|
||||
|
||||
# Configuration of publication pages.
|
||||
[params.publications]
|
||||
# Date format (refer to https://sourcethemes.com/academic/docs/customization/#date-format )
|
||||
# Examples: "Mon, Jan 2, 2006" or "2006-01-02"
|
||||
date_format = "January, 2006"
|
||||
|
||||
# Configuration of project pages.
|
||||
[params.projects]
|
||||
# List publications and talks related to the project?
|
||||
list_children = true
|
||||
|
||||
# Post list format.
|
||||
# 0 = Simple
|
||||
# 1 = Detailed
|
||||
# 2 = Stream
|
||||
post_format = 2
|
||||
|
||||
# Publication list format.
|
||||
# 0 = Simple
|
||||
# 1 = Detailed
|
||||
# 2 = APA
|
||||
# 3 = MLA
|
||||
# 4 = Stream
|
||||
publication_format = 4
|
||||
|
||||
# Talk list format.
|
||||
# 0 = Simple
|
||||
# 1 = Detailed
|
||||
# 2 = Stream
|
||||
talk_format = 2
|
||||
|
||||
# Social/Academic Networking
|
||||
#
|
||||
# Icon pack "fab" includes the following social network icons:
|
||||
#
|
||||
# twitter, weibo, linkedin, github, facebook, pinterest, google-plus,
|
||||
# youtube, instagram, soundcloud
|
||||
#
|
||||
# For email icon, use "fas" icon pack, "envelope" icon, and
|
||||
# "mailto:your@email.com" as the link.
|
||||
#
|
||||
# Full list: https://fontawesome.com/icons
|
||||
#
|
||||
# Icon pack "ai" includes the following academic icons:
|
||||
#
|
||||
# cv, google-scholar, arxiv, orcid, researchgate, mendeley
|
||||
#
|
||||
# Full list: https://jpswalsh.github.io/academicons/
|
||||
|
||||
[[params.social]]
|
||||
icon = "envelope"
|
||||
icon_pack = "fas"
|
||||
link = "#contact" # For a direct email link, use "mailto:test@example.org".
|
||||
|
||||
[[params.social]]
|
||||
icon = "twitter"
|
||||
icon_pack = "fab"
|
||||
link = "https://twitter.com/ariejan"
|
||||
|
||||
[[params.social]]
|
||||
icon = "github"
|
||||
icon_pack = "fab"
|
||||
link = "https://github.com/ariejan"
|
||||
|
||||
# Link to a PDF of your resume/CV from the About widget.
|
||||
# To enable, copy your resume/CV to `static/files/cv.pdf` and uncomment the lines below.
|
||||
# [[params.social]]
|
||||
# icon = "cv"
|
||||
# icon_pack = "ai"
|
||||
# link = "files/cv.pdf"
|
||||
|
||||
# Navigation Links
|
||||
# To link a homepage widget, specify the URL as a hash `#` followed by the filename of the
|
||||
# desired widget in your `content/home/` folder.
|
||||
# The weight parameter defines the order that the links will appear in.
|
||||
[params.menus]
|
||||
# Align the main menu to the right of the page? (true/false)
|
||||
align_right = true
|
||||
|
||||
[[menu.main]]
|
||||
name = "Home"
|
||||
url = "/"
|
||||
weight = 10
|
||||
|
||||
[[menu.main]]
|
||||
name = "Posts"
|
||||
url = "#posts"
|
||||
weight = 20
|
||||
|
||||
[[menu.main]]
|
||||
name = "Projects"
|
||||
url = "#projects"
|
||||
weight = 40
|
||||
|
||||
[[menu.main]]
|
||||
name = "Contact"
|
||||
url = "#contact"
|
||||
weight = 60
|
||||
|
||||
# Link to a PDF of your resume/CV from the menu.
|
||||
# To enable, copy your resume/CV to `static/files/cv.pdf` and uncomment the lines below.
|
||||
# [[menu.main]]
|
||||
# name = "CV"
|
||||
# url = "files/cv.pdf"
|
||||
# weight = 7
|
||||
|
||||
# Search.
|
||||
[params.search]
|
||||
# Search provider:
|
||||
# 0: No search engine
|
||||
# 1: Built-in (Fuse)
|
||||
# 2: Algolia (https://www.algolia.com)
|
||||
engine = 1
|
||||
|
||||
# Configuration of Algolia search engine.
|
||||
# Paste the values from your Algolia dashboard.
|
||||
[params.search.algolia]
|
||||
app_id = ""
|
||||
api_key = ""
|
||||
index_name = ""
|
||||
show_logo = false
|
||||
|
||||
# Taxonomies.
|
||||
[taxonomies]
|
||||
tag = "tags"
|
||||
category = "categories"
|
||||
publication_type = "publication_types"
|
||||
|
||||
# Languages
|
||||
# Create a [languages.X] block for each language you want, where X is the language ID.
|
||||
# Refer to https://sourcethemes.com/academic/docs/language/
|
||||
|
||||
# Configure the English version of the website.
|
||||
[languages.en]
|
||||
languageCode = "en-us"
|
||||
|
||||
# Uncomment the lines below to configure your website in a second language.
|
||||
#[languages.zh]
|
||||
# languageCode = "zh-Hans"
|
||||
# title = "Chinese website title..."
|
||||
# [languages.zh.params]
|
||||
# name = "Your name in Chinese..."
|
||||
# role = "Your role in Chinese..."
|
||||
# [[languages.zh.menu.main]]
|
||||
# name = "Wo"
|
||||
# url = "#about"
|
||||
# weight = 1
|
|
@ -1,69 +0,0 @@
|
|||
+++
|
||||
date = "2016-01-12"
|
||||
title = "Denon PMA-560 Repair Log - Update"
|
||||
tags = ["ohmexpress", "repair", "audiorepair"]
|
||||
categories = [ "Audio Repair" ]
|
||||
description = "Replacement parts for the Denon PMA-560 have arrived. Let's get to work!"
|
||||
slug = "denon-pma-560-repair-log-update"
|
||||
+++
|
||||
|
||||
Last week I diagnosed a Denon PMA-560 Integrated Stereo Amplifier. The device worked fine
|
||||
since its production in 1990, but had lost output on the left channel. My diagnosis, as
|
||||
you can [read in the previous repair log][repair-log] was a defect in the A-Channel
|
||||
relay.
|
||||
|
||||
## There and back again
|
||||
|
||||
It sounds straightforward: just replace the A-channel relay. And it is. But does require
|
||||
a bit of work and careful deconstruction of the unit.
|
||||
|
||||
![Original Relays of the Denon PMA-560](/img/denon-pma-560-situation.jpg)
|
||||
|
||||
Those are the original relays. On the left you can see some metal pins connected to the
|
||||
PCB, those are the speaker terminals that you can see protrude out the back. This PCB is,
|
||||
on one side, firmly pressed against the back panel of the case and other the other side
|
||||
wedged in by the big transformer. The PCB itself is held in place by three white plastic
|
||||
pins. Can you spot them?
|
||||
|
||||
To remove the PCB, as I need to do some soldering work on the bottom side, I'd need to
|
||||
remove the back panel, which amounts to 15 screws. After that, the PCB comes loose and
|
||||
the soldering iron can be heated up.
|
||||
|
||||
## Replacement
|
||||
|
||||
The first problem is that the schematic in the service manual sports two RL602 devices.
|
||||
I've marked the three relays in green. RL601 and RL602 are for the A and B speaker channels.
|
||||
The second relay also RL602 in the schematic is for the headphones. Luckily this relay
|
||||
has different size and shape and is correctly marked as RL603 on the PCB silkscreen.
|
||||
|
||||
![Error in the schematic](/img/denon-pma-560-schematic-2.png)
|
||||
|
||||
The relay has six pins, which are soldered to the PCB. Using my soldering iron and
|
||||
desoldering pump I first removed most of the solder and then wiggled the relay free
|
||||
while quickly heating up each pin.
|
||||
|
||||
![Relay removed](/img/denon-pma-560-removed-relay.jpg)
|
||||
|
||||
Next up, insert new relays and solder it to the PCB.
|
||||
|
||||
![Relay replaced](/img/denon-pma-560-replaced-relay.jpg)
|
||||
|
||||
Here is the new relay in place. As you can see it's the same make and model as
|
||||
it's malfunctioning predecessor.
|
||||
|
||||
Let's get the PCB back in, re-attach the back plate and hook the unit up to some speakers
|
||||
and input.
|
||||
|
||||
## Moment of truth
|
||||
|
||||
Yes. It worked. Turn on some music, select the correct input, select A-channel speaker output
|
||||
and slowly turn up the volume to the voice of Adele.
|
||||
|
||||
After this I did a double-check that I reconnected all wires and put the device back
|
||||
together (including the 15 screws on the back, not counting the three for the top cover).
|
||||
|
||||
Here is the restored Denon PMA-560 Integrated Stereo Amplifier, fully tested and working.
|
||||
|
||||
![Denon PMA-560](/img/denon-pma-560-project-completed.jpg)
|
||||
|
||||
[repair-log]: /2016/01/07/denon-pma-560-repair-log/
|
|
@ -1,43 +0,0 @@
|
|||
+++
|
||||
date = "2017-10-16"
|
||||
title = "Signal 1 - DIY Audio Signal Generator (Part 1)"
|
||||
tags = ["audio", "design", "electronics", "signal-1"]
|
||||
description = "This is part 1 in a series of posts showing you how I build a digitally controlled audio signal generator based on the AD9833."
|
||||
slug = "signal-1-diy-signal-generator-part-1"
|
||||
+++
|
||||
|
||||
**Signal 1** is the name for my first _signal generator_ project. The goal for this project
|
||||
is to create a device that can output clean sine waves in the 10 Hz - 100 kHz range for testing
|
||||
audio equipment.
|
||||
|
||||
This is what I'm looking for:
|
||||
|
||||
* 10 Hz - 100 kHz frequency range sine waves
|
||||
* Stereo Line level output (100-600 Ohm output impedance; 2Vpp) to feed directly into an amp
|
||||
* Display of frequency and other settings
|
||||
* Frequency presets or 'zero' at 1kHz
|
||||
* Adjustable amplitude (e.g. volume control; 5mVpp - 2Vpp)
|
||||
* Digitally controlled
|
||||
|
||||
Bonus features:
|
||||
|
||||
* Reverse RIAA circuit
|
||||
* Frequency sweep
|
||||
|
||||
There are at this point two pieces of hardware I have selected:
|
||||
|
||||
**AD9833 Programmable Waveform Generator** is a nice chip that can more than handle my simple needs. If
|
||||
it can go up to a 16Mhz square wave, that'd be great, but not necessary. It's also inexpensive when bought
|
||||
from China as a breakout board. I'm not usually a fan of there boards, but to for prototyping they should
|
||||
be fine. The AD9833 communicates for SPI, so I'll need a microcontroller to handle that.
|
||||
|
||||
![The AD9833 Breakout Board](/img/signal-1-ad9833-breakout.jpg)
|
||||
|
||||
**Arduino Nano**. I was going to go for an onboard ATMega328 and program it directly using
|
||||
_Atmel Studio_. However, there's so much good stuff out there for Arduino that I'll start out
|
||||
by just plugging in an Arduino Nano and program that. The upside is that it alread contains
|
||||
USB/Serial so it's be rather easy to make this devise computer controlled later on. That said,
|
||||
for the final build I might op to integrate the Arduino Nano components on my PCB anyway :-)
|
||||
|
||||
For now, I've ordered a few AD9833 breakout boards from China and I'll start working on a block diagram
|
||||
of the entire system soon, which you can read about in Part 2 of this series.
|
|
@ -1,100 +0,0 @@
|
|||
+++
|
||||
date = "2014-11-26"
|
||||
title = "VoltMeister 100: Bench Power Supply - Part 2"
|
||||
tags = ["electronics", "voltmeister", "power supply"]
|
||||
categories = [ "Electronics" ]
|
||||
description = "In Part 1 of this series I discussed how an ATX power supply can be usedto create a poor man's bench power supply. In Part 2 I'll show you howI managed to fit the ATX power supply, my control board and everythingelse neatly into a single box."
|
||||
slug = "voltmeister-100-atx-bench-power-supply-part-2"
|
||||
+++
|
||||
In [Part 1](https://ariejan.net/2014/11/24/voltmeister-100-atx-bench-power-supply-part-1/) of
|
||||
this article I've discussed the design and PCB layout for my _VoltMeister 100_ project.
|
||||
I've converted an ATX power supply to a safe-to-use bench power supply. Although not ideal
|
||||
for anything serious, it's a great way to actually get started and complete a project.
|
||||
|
||||
This is Part 2 of a two part write-up of how I designed and built my first bench
|
||||
power supply.
|
||||
|
||||
* [Part 1 - Design, schematic and PCB](https://ariejan.net/2014/11/24/voltmeister-100-atx-bench-power-supply-part-1)
|
||||
* [Part 2 - Enclosure and finished build](https://ariejan.net/2014/11/26/voltmeister-100-atx-bench-power-supply-part-2)
|
||||
|
||||
## The enclosure
|
||||
|
||||
I think that in a professional design process there is some tension between the PCBs you design, the
|
||||
components you use and the enclosure you need to all fit it in. I tried to be smart and opted to buy a
|
||||
'universal enclosure' that would fit my ATX power supply and leave some room for a small PCB.
|
||||
|
||||
Because of the dimensions of the ATX power supply (roughly 140x50x80mm), I needed something that would fit that.
|
||||
Note that most dimenstions specified when shopping for enclosures are _outside_ dimensions.
|
||||
|
||||
In the end I opted for a nice Hammond enclosure, large enough to fit my power supply snugly and not
|
||||
too expensive. It even has nice aluminium front and back panels. For those wondering, it's
|
||||
the [1598ESGY](http://octopart.com/1598esgy-hammond-46506) from Hammond.
|
||||
|
||||
![](/img/hammond-enclosure.jpg "Hammond Universal Enclosure")
|
||||
|
||||
Another thing I learned is to take a detailed look at the specification drawings.
|
||||
|
||||
![](/img/hammond-inside.png "Inside the enclosure")
|
||||
|
||||
Notice the two supports circled in red? Yeah, those are used to screw the top and bottom parts of
|
||||
the enclosure together. And guess what, my ATX power supply does _not_ fit between those
|
||||
two supports and is now protruding about 10mm from the back. Booh!
|
||||
|
||||
This is really a problem. I don't want to have an ATX power supply hanging out of the back.
|
||||
|
||||
At first I thought of just buying a larger case, but I would not be that easily defeated.
|
||||
|
||||
Because I'm curious by nature, I opened up my ATX power supply to see what's inside and
|
||||
remove some of the cables I would not need.
|
||||
|
||||
The PCB for the ATX supply is pretty tightly packed, but I noticed that transformer on the side was
|
||||
not mounted on the PCB. There was a nice cutout on the PCB to allow room for the transformer.
|
||||
|
||||
Putting one and one together I decided to remove the ATX enclosure and see if I could fit
|
||||
the PCB in my small Hammond case. The transformer could be moved just a bit so it would
|
||||
not interfer with the support inside the case.
|
||||
|
||||
This worked brilliantly. All I had to do was make cutouts for the powercord and 120/230V
|
||||
selector.
|
||||
|
||||
The only reason I did this is because there is a clear separation between the high
|
||||
voltage parts of the supply and the control (for the fan, I presume). Because the
|
||||
orientation was just right, it would also shield my own PCB nicely.
|
||||
|
||||
## The build
|
||||
|
||||
Here you can see the inside of my bench power supply.
|
||||
|
||||
![](/img/case-inside.jpg "Inside the case")
|
||||
|
||||
The bottom half is filled with the ATX PCB. You can see the ground wire floating around,
|
||||
this has been connected properly tot he front and back panels.
|
||||
|
||||
The transformer is leaving a bit of a gap and has been placed just on the other
|
||||
side of the support.
|
||||
|
||||
On the top you can see my PCB with the ATX connector attached to it and wires going
|
||||
out to the LEDs, the power switch and the different output voltages.
|
||||
|
||||
## The result
|
||||
|
||||
And, this is the end result. Suffice it to say that my precision drilling skills need
|
||||
some more love. But other than that, I'm quite happy with how it turned out. It's my
|
||||
first project, after all.
|
||||
|
||||
![](/img/voltmeister-100.jpg "VoltMeister 100 in all it's glory")
|
||||
|
||||
## Conclusion
|
||||
|
||||
Building an ATX-based bench power supply like this is nice. If you need
|
||||
a stable and reliable power supply, you're probably better off buying a cheap
|
||||
linear power supply online for like € 50.
|
||||
|
||||
I did this project to learn something. And I did. I learned how to SMD solder components,
|
||||
I learned what to look out for when selecting an enclosure for your project. I also learned
|
||||
about ATX power supplies and how you don't want to mess with them. These units handle
|
||||
pretty beefy currents. If you don't know what you're doing you could end up hurting yourself.
|
||||
|
||||
What's next? The VoltMeister 200, of course!
|
||||
|
||||
|
29
content/home/about.md
Normal file
29
content/home/about.md
Normal file
|
@ -0,0 +1,29 @@
|
|||
+++
|
||||
# About/Biography widget.
|
||||
widget = "about"
|
||||
active = true
|
||||
date = 1980-10-17T00:00:00
|
||||
|
||||
# Order that this section will appear in.
|
||||
weight = 5
|
||||
|
||||
# List your academic interests.
|
||||
[interests]
|
||||
interests = [
|
||||
"Software Engineering",
|
||||
"Electronics repair, design, and manufacturing"
|
||||
]
|
||||
|
||||
# List your qualifications (such as academic degrees).
|
||||
[[education.courses]]
|
||||
course = "B.Sc. Software Engineering"
|
||||
institution = "Fontys University of Applied Sciences"
|
||||
year = 2007
|
||||
|
||||
+++
|
||||
|
||||
# Biography
|
||||
|
||||
Ariejan de Vroom is a senior software engineer at [Kabisa](https://www.kabisa.nl). His interests include test-driven software development and rock-solid backend engineering. He leads teams of software developers as scrum master or product owner in web development projects.
|
||||
|
||||
In his free time Ariejan likes to tinker with electronics by repairing _"vintage"_ audio equipment or designing, programming, and manufacturing small batch electronics projects.
|
22
content/home/contact.md
Normal file
22
content/home/contact.md
Normal file
|
@ -0,0 +1,22 @@
|
|||
+++
|
||||
# Contact widget.
|
||||
widget = "contact"
|
||||
active = true
|
||||
date = 1980-10-17T00:00:00
|
||||
|
||||
title = "Contact"
|
||||
subtitle = ""
|
||||
|
||||
# Order that this section will appear in.
|
||||
weight = 70
|
||||
|
||||
# Automatically link email and phone?
|
||||
autolink = true
|
||||
|
||||
# Email form provider
|
||||
# 0: Disable email form
|
||||
# 1: Netlify (requires that the site is hosted by Netlify)
|
||||
# 2: formspree.io
|
||||
email_form = 2
|
||||
+++
|
||||
|
55
content/home/experience.md
Normal file
55
content/home/experience.md
Normal file
|
@ -0,0 +1,55 @@
|
|||
+++
|
||||
# Experience widget.
|
||||
widget = "experience" # Do not modify this line!
|
||||
active = true # Activate this widget? true/false
|
||||
|
||||
title = "Experience"
|
||||
subtitle = ""
|
||||
|
||||
# Order that this section will appear in.
|
||||
weight = 8
|
||||
|
||||
# Date format for experience
|
||||
# Refer to https://sourcethemes.com/academic/docs/customization/#date-format
|
||||
date_format = "January 2006"
|
||||
|
||||
# Experiences.
|
||||
# Add/remove as many `[[experience]]` blocks below as you like.
|
||||
# Required fields are `title`, `company`, and `date_start`.
|
||||
# Leave `date_end` empty if it's your current employer.
|
||||
# Begin/end multi-line descriptions with 3 quotes `"""`.
|
||||
[[experience]]
|
||||
title = "Senior Software Engineer"
|
||||
company = "Kabisa"
|
||||
company_url = "https://www.kabisa.nl"
|
||||
location = "Weert, The Netherlands"
|
||||
date_start = "2007-08-06"
|
||||
date_end = ""
|
||||
description = """
|
||||
Provide software engineering consultancy with a focus on Ruby on Rails web applications and software integration.
|
||||
|
||||
Responsibilities include:
|
||||
|
||||
* Writing rock-solid Ruby on Rails applications
|
||||
* Manage development teams as either Scrum Master or Product Owner
|
||||
* Manage relations with stakeholders and customers
|
||||
* Train colleagues on software craftsmanship and testing practices
|
||||
* Supervise software engineering interns and graduate students
|
||||
* Organize and speak at meet-ups and conferences
|
||||
"""
|
||||
|
||||
[[experience]]
|
||||
title = "Lecturer / Software Engineer"
|
||||
company = "Fontys University of Applied Sciences"
|
||||
company_url = "https://www.fontyx.nl"
|
||||
location = "Eindhoven, The Netherlands"
|
||||
date_start = "2004-09-01"
|
||||
date_end = "2007-07-31"
|
||||
description = """
|
||||
Responsibilities include:
|
||||
|
||||
* Lecture on Open-Source software, Linux and provide LPI training courses
|
||||
* Manage groups of students on software engineering projects
|
||||
"""
|
||||
|
||||
+++
|
26
content/home/posts.md
Normal file
26
content/home/posts.md
Normal file
|
@ -0,0 +1,26 @@
|
|||
+++
|
||||
# Recent Posts widget.
|
||||
# This widget displays recent posts from `content/post/`.
|
||||
widget = "posts" # Do not modify this line!
|
||||
active = true # Activate this widget? true/false
|
||||
weight = 40 # Order that this section will appear.
|
||||
date = 1980-10-17T00:00:00
|
||||
|
||||
title = "Recent Posts"
|
||||
subtitle = ""
|
||||
|
||||
# Number of recent posts to list.
|
||||
count = 5
|
||||
|
||||
# List format.
|
||||
# 0 = Simple
|
||||
# 1 = Detailed
|
||||
# 2 = Stream
|
||||
list_format = 2
|
||||
|
||||
# Filter posts by tag or category.
|
||||
# E.g. to only show posts tagged with `Academic`, set `filter_tag = "Academic"`
|
||||
filter_tag = ""
|
||||
filter_category = ""
|
||||
+++
|
||||
|
52
content/home/projects.md
Normal file
52
content/home/projects.md
Normal file
|
@ -0,0 +1,52 @@
|
|||
+++
|
||||
# Projects widget.
|
||||
widget = "projects"
|
||||
active = true
|
||||
date = 2016-04-20T00:00:00
|
||||
|
||||
title = "Projects"
|
||||
subtitle = ""
|
||||
|
||||
# Order that this section will appear in.
|
||||
weight = 50
|
||||
|
||||
# Content.
|
||||
# Display content from the following folder.
|
||||
# For example, `folder = "project"` displays content from `content/project/`.
|
||||
folder = "projects"
|
||||
|
||||
# View.
|
||||
# Customize how projects are displayed.
|
||||
# Legend: 0 = list, 1 = cards, 2 = showcase.
|
||||
view = 2
|
||||
|
||||
# Widget layout
|
||||
# Legend: 0 = two columns (default), 1 = single column
|
||||
widget_layout = 0
|
||||
|
||||
# For Showcase view, flip alternate rows?
|
||||
flip_alt_rows = false
|
||||
|
||||
# Filter toolbar.
|
||||
|
||||
# Default filter index (e.g. 0 corresponds to the first `[[filter]]` instance below).
|
||||
filter_default = 0
|
||||
|
||||
# Add or remove as many filters (`[[filter]]` instances) as you like.
|
||||
# To show all items, set `tag` to "*".
|
||||
# To filter by a specific tag, set `tag` to an existing tag name.
|
||||
# To remove toolbar, delete/comment all instances of `[[filter]]` below.
|
||||
# [[filter]]
|
||||
# name = "All"
|
||||
# tag = "*"
|
||||
#
|
||||
# [[filter]]
|
||||
# name = "Deep Learning"
|
||||
# tag = "Deep Learning"
|
||||
#
|
||||
# [[filter]]
|
||||
# name = "Other"
|
||||
# tag = "Demo"
|
||||
|
||||
+++
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user